我有大約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,但都沒有及時斷言。
那爲什麼它在Firefox和Chrome?他們是否還需要等待? – Odecif
他們寫得更好,所以他們認識到頁面被刷新。 IEDriver是更多的車。仍然檢查元素的變化成本不是很高,並且是某種預期的。 – SkorpEN