簡體   English   中英

Selenium Webdriver在執行測試腳本期間非常不一致

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM