3
我已經作出使用使用yadda庫硒webdriver的功能性測試。問題在於,在我的不同環境中,相同的測試套件工作不同。例如:策略在JavaScript測試硒的webdriver在不同的環境
在測試中,它的基礎上的環境,我進入是不同的結果。
本地本地主機:5000
Open my search site
․ when i go to my site: 2169ms
․ when i write a text on the search input: 21ms
․ when i click the search button: 130ms
․ then i get the results page.": 46ms
分期mystaging.domain.com
Open my search site:
StaleElementReferenceError: {"errorMessage":"Element is no longer attached to the DOM","request":{"headers":{"Accept":"application/json; charset=utf-8","Connection":"close","Content-Length":"2"
生產www.domain.com
Open my search site
․ when i go to my site: 2169ms
․ when i write a text on the search input: 21ms
․ when i click the search button: 130ms
․ then i get the results page.": 46ms
此時,只有分期測試是失敗的,但在其他情況下,當互聯網連接它的速度慢,測試生產失敗,但傳中分期。 的主要問題是,瀏覽器不具備的DOM準備好了測試,他們沒有找到測試所需的元素。
我對試圖解決這個問題的辦法,這是等待出現我的網頁的根元素是這樣的:
return driver.wait(() => driver.isElementPresent(By.css(".my__homepage")), 50000);
但這是不夠的,我的,因爲測試套件仍然不能隨意。所以,我的問題是:
這可能是在不同環境下運行的最佳方法,測試套件處理瀏覽器上未準備好的元素?
這似乎是你的DOM元素沒有準備好一個問題。在訪問任何元素之前,您應該對它們進行隱式等待。因此,如果您的響應時間從環境到環境的增加/減少,它不會中斷測試。 –
感謝您的意見。我試圖設定一個等待,但這不行。你知道是否存在一種方法可以100%確保我的測試等待整個HTML文檔的加載,比如「準備就緒」事件或類似的事情? –
我可以給你舉一些例子。您是否在使用C#或Java(或其他)Selenium? –