我們有一個使用Selenium Webdriver開發的關鍵字驅動框架。 運行腳本時,一些測試用例在第一次運行時會超時。當我做第二次運行時,上次失敗的相同測試用例通過,但這次其他一些測試用例失敗。Selenium Webdriver在執行測試腳本期間非常不穩定
有人可以請建議,如果有什麼需要在框架/配置部分完成。
我在官方Selenium網站的Windows 7和IE驅動程序上使用IE9,Java 6,Selenium 2.40。
我們有一個使用Selenium Webdriver開發的關鍵字驅動框架。 運行腳本時,一些測試用例在第一次運行時會超時。當我做第二次運行時,上次失敗的相同測試用例通過,但這次其他一些測試用例失敗。Selenium Webdriver在執行測試腳本期間非常不穩定
有人可以請建議,如果有什麼需要在框架/配置部分完成。
我在官方Selenium網站的Windows 7和IE驅動程序上使用IE9,Java 6,Selenium 2.40。
Sainath,
祕密高效運行的TestCase在於你的方式寫下的TestCase ..的流利等待使用,等待之前的元素是可見和啓用並在測試用例使用HTML 的ID的使TCs高效。 IE和Selenium幾乎所有的時間都沒有相處..我的意思是,IE和Selenium有很多問題。
的唯一實現效益的方法是通過適當的處理異常的和使用wait聲明
可怕的答案 –
這個答案是在OP問什麼很模糊對於。 – Danchez
我會建議確保您使用的關鍵字不是動態生成的。
我在一個網站上工作過,所有的ID都是這樣的:'ext-gen123',然後下一個運行,同樣的元素會有ID:'ext-gen124',但是運行在這之後,ID將返回到'ext-gen123'...
在這種情況下,您必須使用其他標識符來定位元素 - 可能是CssClass或XPath。
感謝@autoKarma用於回覆...我已經調查了DOM元素和ID的都沒有動......只是想知道這是什麼做的webdriver。 –
如果動態ID是沒有問題的,等等@nislesh和METIsatish說 - 構造適當的等待可能會幫助你。嘗試一下,如果你仍然有麻煩,請回來告訴我們。 (但是,如果等待就是問題的答案,儘量確保您標記Nilesh製作或NETIsatish的答案接受):) – autoKarma
感謝@autoKarma我會讓大家都知道結果 –
你的測試可能因爲各種原因易碎。
1.同步 - 請勿使用Thread.sleep
。您應該在考試中考慮等待機制。 WebDriver有兩種類型的等待。隱含等待和明確 等待。
a。隱WAIT -例如下面WebDriver
在最大將在內部輪詢30秒投擲NoSuchElementFoundException
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
B之前。明確的等待 - 這裏你告訴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.數據依賴 - 確保你的測試是相互獨立的,他們不共享數據。測試可以發生碰撞,如果他們在的XPath共享數據,這使得它們易碎
3.使用CSS - 尋找我的答案here,爲什麼
4.抽象一層 - 確保您已抽象從頁面邏輯測試邏輯。使用PageObjects和PageFactory工藝更好地維護您的套件
最後閱讀Simon Stewarts的博客Automated Web Testing: Traps for the Unwary瞭解詳情。
鏈接「自動化Web測試:稍有不慎」死了。 –
現在修復了鏈接 – nilesh
你能提供一個測試的例子嗎?這聽起來像是在執行的東西,尤其是在與IE的問題了計時問題。 –