[英]Selenium Webdriver is very inconsistent during Execution of test scripts
我們有一個使用Selenium Webdriver開發的關鍵字驅動框架。 在運行腳本時,一些測試用例在第一次運行中會超時。 當我第二次運行時,相同的測試用例上次通過失敗,但是這次其他一些測試用例失敗了。
有人可以建議在框架/配置部分是否需要做任何事情。
我正在Windows 7上使用IE9,Java 6,Selenium 2.40,以及來自Selenium官方網站的IE驅動程序。
由於各種原因,您的測試可能很脆弱。
1.同步 -請勿使用Thread.sleep
。 您應該在測試中考慮等待機制。 WebDriver中有兩種類型的等待。 隱式等待和顯式等待。
一種。 隱式等待-例如下面的WebDriver
在拋出NoSuchElementFoundException
之前將內部最多輪詢30秒
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
灣 顯式等待 -在這里告訴WebDriver等待特定條件滿足。 例如,在下面,我正在等待鏈接“ Account
可供點擊。 一旦可用的WebDriver將返回WebElement
以便可以單擊它。 看看一些已經實現的有用的ExpectedConditions
WebDriverWait wait = new WebDriverWait(driver,30/*Timeout in seconds*/);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Account")));
element.click();
2.數據依賴性 -確保您的測試彼此獨立,並且不共享數據。 如果測試共享數據,可能會導致沖突
3.在Xpaths上使用CSS- 在這里找到我的答案
4.抽象層 -確保已從頁面邏輯中抽象出測試邏輯。 使用PageObjects和PageFactory技術來更好地維護套件
最后,請閱讀Simon Stewarts的博客, 網址為“自動Web測試:陷阱”,以獲取詳細信息。
我建議確保您使用的關鍵字不是動態生成的。
我曾經在一個站點上工作過,所有ID都看起來像這樣:“ ext-gen123”,然后在下一次運行時,相同的元素將具有ID:“ ext-gen124”,但是在那之后運行ID回到'ext-gen123'...
在這種情況下,您必須使用其他標識符來定位元素-可能是CssClass或XPath。
Sainath,
有效運行TestCases的秘訣在於您編寫TestCases的方式。.使用Fluent wait ,在元素可見和啟用之前等待 ,在Testcase中使用html ID使TC高效。 IE和Selenium並不是一直都很好。.我的意思是,IE和Selenium有很多問題。
實現效率的唯一途徑是正確處理異常和使用Wait語句
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.