系统中发现硒元素,但 Jenkins 中未发现

pet*_*osg 5 java junit jenkins selenium-webdriver

我和我的团队最近开始使用 Selenium Web Driver 和 JUnit 开发自动化脚本。我面临一个问题,而且我真的不知道如何继续。任何建议都会有用。

问题是:我有一个页面,在其中我以表单形式上传两个 Excel,然后按提交按钮确认上传。

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

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

所有这些都在我的本地电脑(Windows 7,Firefox WebDriver)上成功运行。

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

由于我无法直观地访问 jenkins 运行的内容,因此我将元素确认(在 jenkins 上失败)替换为getPageSource().

getPageSource()返回我希望看到的页面以及我试图找到的元素(本地和詹金斯上)。

关于可能发生的事情有什么想法吗?

笔记:

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

我尝试使用 xpath 来定位该元素。事实上,我在 Firefox 中使用了 Firebug 提供的 xpath,在 Chrome 中使用了 Web Developer 提供的 xpath。只是为了确保 xpath 没有任何问题。两个 xpath 在我的本地计算机上成功找到该元素,但在 jenkins 上失败。

执行测试(本地和 Jenkins 上)我可以看到数据库按预期填充。

请原谅缺少代码,但我可以分享的内容受到限制。

san*_*ndy 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"));
 }
}); 
Run Code Online (Sandbox Code Playgroud)

这里给出的。