2

我的 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 中运行这样的脚本后,出现Unable to locate element: "//div[@id='TextBox']". 但是当我在 jenkins 中再次运行相同的脚本时,它就通过了。我可以理解这是由于页面未正确加载。我在基类中使用以下命令。

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

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

4

2 回答 2

0

添加隐式等待,以确保元素已经可用,或使用睡眠

于 2013-04-17T14:25:51.270 回答
0

WebdriverWait 可能是您需要的。

这是一个很好的答案:https ://stackoverflow.com/a/9904784/629116

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

于 2013-04-17T22:26:50.793 回答