我有大约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