2017-04-05 20 views
0

私は、モーダルポップアップが表示されるまで数秒間Seleniumの実行を一時停止しようとしていました。 しかし、time.sleep(5)はphantomJSを使用していませんでした(私はPhantomJSが睡眠をサポートしていないと聞いてきました)。 私はsetTimeoutを考えました。pythonでsetTimeoutが動作しません。Seleniumスクリプトを実行します。

driver.execute_script('setTimeout(function(){"scroll(0, 300);"}, 3600);') 

しかし、Chrome Seleniumドライバでも機能しません。

driver.execute_script('scroll(0, 300);')でも動作しますが、セレンのsetTimeoutの実行方法はわかりません。

+0

http:// stackoverfl ow.questions/17533024/how-to-set-selenium-python-webdriver-default-timeout –

+0

なぜ 'import time'だけでなく、' driver.execute_script( 'scroll()の前に 'time.sleep(3.6) 0、300); ') '? – Andersson

+0

@Andersson私はそれを試しました。しかし、私はtime.sleep(3.6)を使うことはできません。私はmadalポップアップが表示されるのを待つ必要があります。 _time.sleep(3)_を使用すると、 '**要素は現在対話可能ではなく、操作できない可能性があります**'というエラーが発生します。スクリーンショットを取得したときに、モーダルポップアップが表示されません。 – dizwe

答えて

0

あなたには、いくつかの特定の条件を満たすために必要がある場合は、あなたのような、ExplicitWait + ExpectedConditionsを使用することがあります:*

from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 

wait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "Specify css selector for your modal div"))) 
driver.execute_script('scroll(0, 300);') 

あなたがBy.XPATHとしてのような任意のセレクタを使用することができ、By.IDなど

このスクリプトを実行する前に、必要な要素が表示されるまで待つ(最大10秒間)ようにしてください。

+0

私はあなたが言及した方法を試みました。しかし、私がスクリーンショットを取得したとき、モーダル部門は出てこなかった。 'WebDriverWait(driver、10).until(EC.visibility_of_element_located((By.XPATH、" // * [@ id = \ "teacher_booked_modal \"]/div/div/div ")))' – dizwe

関連する問題