我正在运行Selenium自动化测试以浏览向导。每个步骤都有一个阶段计数器,用于跟踪当前步骤。我断言(在屏幕上)隐藏的舞台元素,以在右页上断言我。
在向导的每个页面上都有像用户名一样填写的内容。然后单击下一步并转到下一页,舞台计数器将增加1。
最后一个阶段是第4阶段,当提交最后阶段时,您将被重定向到新的向导,其中阶段计数再次为1。
向导显示在Twitter Bootstrap 3模态窗口中。
当我在无头模式下运行测试时断言此新向导中的阶段计数为1失败。 它仍然是4.我也无法在这里找到任何元素。因此,在无头模式下,似乎没有正确加载此页面。 我在每次点击后都尝试过Thread.sleep(5000)以确保正确加载。在断言阶段计数变为1之前,我也尝试等待元素出现。 结果是没有这样的元素异常。
所以我的问题是,无头模式有什么不同可以导致这种情况发生?
driver.findElement(By.xpath("ElementImLookinFor")).clear();
driver.findElement(By.xpath("ElementImLookinFor")).sendKeys("test");
driver.findElement(By.name("submit")).click();
stageElementCheck("4");
driver.findElement(By.xpath("TermsOfUseElement")).click();
driver.findElement(By.name("submit")).click();
stageElementCheck("1"); //expected 1 was 4
driver.findElement(By.xpath("ElementImLookinFor")).click();
driver.findElement(By.name("submit")).click();
public void stageElementCheck(String i){
assertTrue(isElementPresent(By.xpath("HiddenStageElement")));
assertEquals(i,driver.findElement(By.xpath("HiddenStageElement")).getAttribute("value"));
}
实现无头:
driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_24);
((HtmlUnitDriver) driver).setJavascriptEnabled(true);
Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
driver.manage().timeouts().implicitlyWait(timeoutSeconds, TimeUnit.SECONDS);
答案 0 :(得分:0)
我建议你使用像Xvfb x server这样的工具在无头模式下运行selenium UI测试。它易于配置。