Selenium测试失败无头,在firefox中取得成功

时间:2015-04-08 09:41:52

标签: java twitter-bootstrap selenium

我正在运行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);

1 个答案:

答案 0 :(得分:0)

我建议你使用像Xvfb x server这样的工具在无头模式下运行selenium UI测试。它易于配置。