0

我有大約50個自動化測試用例,它們在Chrome和Firefox中都像魅力一樣工作,但IE不會這麼做(IE瀏覽器太糟糕了)。因爲(我認爲)它試圖斷言太快,所以IE在斷言(不是所有的斷言,但絕大多數斷言)都失敗。該頁面渲染速度不夠快。Webdriver在IE瀏覽器中聲明失敗

下面是一段代碼,在Chrome和FF的作品,而不是IE:

driver.manage().timeouts().implicityWait(30, TimeUnit.SECONDS); 
driver.navigate().to(targetAdminServer()); 
Assert.assertTrue("The startpage is displayed", driver.getTitle().startsWith("Admin Portal -")); 
driver.findElement(By.id("loginForm:j_id4:username")).sendKeys(loginSAUsername()); 
driver.findElement(By.id("loginForm:j_id6:password")).sendKeys(loginSAPassword()); 
driver.findElement(By.id("loginForm:login")).click(); 
Assert.assertTrue("Login successful", driver.getTitle().contains("Welcome,")); 

當我得到以下錯誤:

java.lang.AssertionError: Login successful 
at org.junit.Assert.fail(Assert.java:88) 
at org.junit.Assert.assertTrue(Assert.java:41) 
at first.example.project.webdriver.AddUser.I_am_logged_in_as_a_administrator(AddUser.java:36) 
at ✽.Given I am logged in as a "administrator"(C:\path\cucumberfeature1.feature:5) 

我可以在執行過程中看到的是, webdriver使用用戶名和密碼填充字段,然後在點擊登錄按鈕後立即死亡。

任何可能導致此問題的想法都非常受歡迎。

更新: 我可以補充說,如果我在斷言失敗之前添加一個Thread.sleep(1000),它會工作得很好。

UPDATE2:一位朋友問我是否可能是因爲IE通常運行在32位,而其餘瀏覽器運行在64位(因爲我有一個64位操作系統),這可能有什麼用它做?

UPDATE3:嘗試使用64位和32位IEDriverServer,但都沒有及時斷言。

回答

0

登錄後點擊「需要一些等待元素」。 當標題將被更改時,您可以檢查,但不會在事件發生之前。

+0

那爲什麼它在Firefox和Chrome?他們是否還需要等待? – Odecif

+0

他們寫得更好,所以他們認識到頁面被刷新。 IEDriver是更多的車。仍然檢查元素的變化成本不是很高,並且是某種預期的。 – SkorpEN

0

請如下配置:

  1. 進入註冊表編輯器
  2. 參考HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432node \微軟\的Internet Explorer \ MAIN \ FeatureControl
  3. 找到關鍵FEATURE_BFCACHE,如果沒有找到 - >創建1 DWORD iexplore.exe,值= 0
  4. 嘗試在IE上運行您的測試用例並注意問題是否已解決 - >如果失敗 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl d創建IEXPLORE.EXE,值= 0

我希望這對您有所幫助:)