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

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

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

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

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

所有这些都可以在我的电脑上成功地在本地工作(Windows 7,firefox webdriver)。

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

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

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

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

笔记:

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

我尝试使用xpath定位元素。 事实上,我使用了Firefox中的Firebug和Chrome中的Web开发人员给我的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 wait = new FluentWait(driver) .withTimeout(30, SECONDS) .pollingEvery(5, SECONDS) .ignoring(NoSuchElementException.class); WebElement foo = wait.until(new Function() { public WebElement apply(WebDriver driver) { return driver.findElement(By.id("foo")); } }); 

如此处所示 。