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

我希望这对您有所帮助:)