我有大约50个自动测试用例,在Chrome和Firefox中都像魅力一样,但是IE不会这样做(需要太糟糕的IE)。
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用用户名和密码填充字段,然后在点击登录按钮后立即死亡。
对于可能导致此问题的任何想法都非常受欢迎。
更新:
我可以补充一点,如果我在Assertion之前添加Thread.sleep(1000)
失败,它就可以正常工作。
UPDATE2:一位朋友问我是否可能因为IE通常以32位运行而其余浏览器以64位运行(因为我有64位操作系统),这有什么关系吗?用它?
UPDATE3:尝试使用64位和32位IEDriverServer,但没有及时断言。
答案 0 :(得分:0)
登录后点击你需要一些等待元素。 当标题被更改时,你可以检查,但不是在事件发生之前。
答案 1 :(得分:0)
请配置如下:
我希望这对你有帮助:))