我的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()
或driver.wait()
,但我认为这不是一个好主意,因为我有超过600个脚本要执行。
答案 0 :(得分:0)
添加隐式等待,以确保元素已可用,或使用sleep
答案 1 :(得分:0)
WebdriverWait可能就是您所需要的。
这是一个很好的答案:https://stackoverflow.com/a/9904784/629116
在尝试向其发送键之前,您需要等待“// div [@ id ='TextBox']”呈现。您也可以考虑在可能的情况下考虑使用css选择器而不是xpath。我发现css选择器的发现速度更快,并且由于它们的灵活性,通常可以承受DOM的变化。