2014-04-25 122 views
0

我們有一個使用Selenium Webdriver開發的關鍵字驅動框架。 運行腳本時,一些測試用例在第一次運行時會超時。當我做第二次運行時,上次失敗的相同測試用例通過,但這次其他一些測試用例失敗。Selenium Webdriver在執行測試腳本期間非常不穩定

有人可以請建議,如果有什麼需要在框架/配置部分完成。

我在官方Selenium網站的Windows 7和IE驅動程序上使用IE9,Java 6,Selenium 2.40。

+0

你能提供一個測試的例子嗎?這聽起來像是在執行的東西,尤其是在與IE的問題了計時問題。 –

回答

-2

Sainath,

祕密高效運行的TestCase在於你的方式寫下的TestCase ..的流利等待使用,等待之前的元素是可見和啓用並在測試用例使用HTML 的ID的使TCs高效。 IE和Selenium幾乎所有的時間都沒有相處..我的意思是,IE和Selenium有很多問題。

的唯一實現效益的方法是通過適當的處理異常的使用wait聲明

+0

可怕的答案 –

+0

這個答案是在OP問什麼很模糊對於。 – Danchez

0

我會建議確保您使用的關鍵字不是動態生成的。

我在一個網站上工作過,所有的ID都是這樣的:'ext-gen123',然後下一個運行,同樣的元素會有ID:'ext-gen124',但是運行在這之後,ID將返回到'ext-gen123'...

在這種情況下,您必須使用其他標識符來定位元素 - 可能是CssClass或XPath。

+0

感謝@autoKarma用於回覆...我已經調查了DOM元素和ID的都沒有動......只是想知道這是什麼做的webdriver。 –

+0

如果動態ID是沒有問題的,等等@nislesh和METIsatish說 - 構造適當的等待可能會幫助你。嘗試一下,如果你仍然有麻煩,請回來告訴我們。 (但是,如果等待就是問題的答案,儘量確保您標記Nilesh製作或NETIsatish的答案接受):) – autoKarma

+0

感謝@autoKarma我會讓大家都知道結果 –

3

你的測試可能因爲各種原因易碎。

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瞭解詳情。

+0

鏈接「自動化Web測試:稍有不慎」死了​​。 –

+1

現在修復了鏈接 – nilesh

相關問題