2013-06-25 22 views
2

我正在執行定製的PHP客戶端硒的檢測和我有實現waitForPageToLoad()功能相關的問題:如何,如果瀏覽器運行任何JavaScript(不更改頁面上的JS)

問題是,僅僅檢查document.readyState是不夠的 - 在頁面上可能會有一些JS腳本運行(例如,點擊按鈕後的一些動畫),這會強制我的waitForPageToLoad()函數繼續等待,但是document.readyState在此情況下返回complete狀態。

另一個問題是我不能使用回調函數,因爲我不知道js會在頁面上運行。儘管如此,我可以在頁面上插入一些js,但我必須確定它不會影響頁面的正常行爲。

任何人都可以提出一個可能的解決方案嗎? 目前我正在使用最新的FF瀏覽器。

謝謝。

+2

沒有辦法 – epascarello

+0

+1以上,至少,沒有可靠的方法。 – Arran

+2

請注意,這是WebDriver API沒有'waitForPageToLoad()'概念的確切原因。在DOM由於JavaScript而不斷變化的世界中,「頁面被完全加載」是一個不可能以一刀切的方式應用的概念。 – JimEvans

回答

0

無法檢查JavaScript是否正在運行。

您可以等待元素出現。

對於Python,它的工作是這樣的:

from selenium.webdriver.support import expected_conditions as EC # noqa 

driver = webdriver.Chrome(...) 

el = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//a")) # change to your needs 
) 

參見:http://selenium-python.readthedocs.io/waits.html

相關問題