2

我剛剛開始使用Selenium,並使用Chrome編寫了一堆測試。然後我嘗試用Firefox運行相同的測試,但其中大部分都失敗了。點擊Selenium中的鏈接後,讓Firefox等待新頁面加載?

我有一堆是有點像這樣的測試:

1. Find link 
2. Click link 
3. Confirm the title of the new page matches what I expect 

這工作在Chrome罰款,但在Firefox 3步,似乎必須立即執行的,瀏覽器有時間來加載之前這一頁。如果我添加了幾秒鐘的等待時間,所有測試都會通過,但我寧願避免這種情況。

這是一個配置問題,還是有更好的方法來編寫測試以幫助兼容?

這是一個測試,在Chrome瀏覽器的基礎知識,但無法在Firefox

link = driver.find_element_by_link_text(link_text) 
link.click() 
# Check if `driver.title` contains `title` 
assert title in driver.title 

插入time.sleep(2)點擊確實使其工作後。

(我的身份驗證測試出現同樣的錯誤:填寫表單,點擊提交,確認用戶被轉發到正確的頁面。在Chrome中,這通過了,在Firefox中,轉發檢查是針對登錄頁面完成的。因爲瀏覽器仍然沒有完成重定向到新的一頁,我得到的報告中指出,試驗失敗了,一秒鐘後瀏覽器呈現的預期頁)

回答

2

您可以應用如下:

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

current_title = driver.title # get current title 
link = driver.find_element_by_link_text(link_text) 
link.click() 
wait(driver, 10).until(lambda driver: driver.title != current_title) # wait for title to be different than current one 
assert title in driver.title 
+0

謝謝,那有效。 –

+1

歡迎。您實際上可以從selenium.webdriver.support導入expected_conditions作爲EC',因爲我使用'lambda'函數而不是'Expected Conditions',所以導入錯誤地添加了 – Andersson

相關問題