Java Selenium脚本在jenkins中失败,但在本地

Java Selenium脚本在jenkins中失败,但在本地,java,selenium,jenkins,Java,Selenium,Jenkins,我的selenium java脚本在本地运行良好,但在jenkins中失败。例如: driver.findElement(By.xpath("//div[@id='IDName']")).click();//loads a new page driver.findElement(By.xpath("//div[@id='TextBox']"))).sendKeys("xyz"); 在jenkins中运行类似这样的脚本之后,我得到了一个错误,即无法定位元素://div[@id='TextBox'

我的selenium java脚本在本地运行良好,但在jenkins中失败。例如:

driver.findElement(By.xpath("//div[@id='IDName']")).click();//loads a new page
driver.findElement(By.xpath("//div[@id='TextBox']"))).sendKeys("xyz");
在jenkins中运行类似这样的脚本之后,我得到了一个错误,即
无法定位元素://div[@id='TextBox']”
。但当我在詹金斯再次运行相同的脚本时,它就通过了。我可以理解这是由于页面加载不正确。我在基类中使用以下命令

driver.manage().timeouts().implicitlyWait(_TIMEOUT, TimeUnit.SECONDS);//_TIMEOUT = 50;

我可以在click和sendkeys行之间添加
Thread.sleep()
driver.wait()
,但我认为这不是一个好主意,因为我有600多个脚本要执行

添加隐式等待,以确保元素已经可用,或者使用sleepWebdriverWait,这可能是您需要的

以下是一个很好的答案:


在尝试向“//div[@id='TextBox']”发送密钥之前,您需要等待“//div[@id='TextBox']”被呈现。如果可能的话,您可能还想考虑使用CSS选择器而不是XPath。我发现css选择器的速度更快,而且通常能够承受对DOM的更改,因为它们具有灵活性。

您正在进行任何Ajax调用吗?不,我没有使用任何Ajax调用。需要更多信息。什么版本的詹金斯?什么浏览器?什么版本的浏览器?如果是Chrome,Chrome驱动程序的版本是什么?你有没有拍过一张失败时的屏幕截图,看不清它到底在哪里?Jenkins版本1.505,firefox 19.0.2,驱动程序-最新版本,在linux机器上运行。总是在加载页面的下一行命令中出错。