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 上)我可以看到数据库按预期填充。
请原谅缺少代码,但我可以分享的内容受到限制。
尝试使用 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)
如这里给出的。
| 归档时间: |
|
| 查看次数: |
2405 次 |
| 最近记录: |