系统中发现了硒元素,但在Jenkins中找不到

时间:2012-10-24 10:26:21

标签: java junit jenkins selenium-webdriver

我和我的团队最近开始使用Selenium Web Driver和JUnit开发自动化脚本。我正面临着一个问题,我完全没有关于如何进行的想法。任何建议都会有用。

问题在于:我有一个页面,我在表单中上传两个excel,然后按提交按钮确认上传。

上传完成后,它会使用数据填充数据库,下一页确认每个Excel的行数。

我正在尝试获取确认上传的元素,这是一种“标签”类型。

所有这些都可以在我的电脑上成功运行(Windows 7,firefox webdriver)。

上传我的代码时,当jenkins构建/执行它时,我得到一个“找不到元素”并且测试失败。

由于我无法直观访问jenkins运行的内容,因此我使用getPageSource()替换了元素确认(在jenkins上失败)。

getPageSource()返回我期望看到的页面,我想要找到的元素(本地和jenkins)。

关于可能发生的事情的任何想法?

备注:

有两个10秒的thread.sleep。一个在上传每个Excel时,一个在点击提交后,以确保加载下一页并成功提交excel。

我尝试使用xpath定位元素。事实上,我使用了Firefox中的Firebug和Chrome中的Web开发人员给我的xpath。只是为了确保xpath没有任何问题。两个xpath都在我的本地机器上成功定位元素,但在jenkins上失败。

执行测试(在本地和Jenkins上)我可以看到数据库应该填充它。

请原谅缺乏代码,但我对可以分享的内容有所限制。

1 个答案:

答案 0 :(得分:0)

尝试使用fluentwait而不是Thread.sleep()。您的元素可能在10秒内未加载,您可以尝试使用

// Waiting 30 seconds for an element to be present on the page, checking
 // for its presence once every 5 seconds.
   Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
   .withTimeout(30, SECONDS)
   .pollingEvery(5, SECONDS)
   .ignoring(NoSuchElementException.class);

WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
 public WebElement apply(WebDriver driver) {
   return driver.findElement(By.id("foo"));
 }
}); 

给定here