每天xpath都在变化

时间:2018-07-30 08:56:29

标签: java selenium sap

driver.findElement(By.xpath("//*[@id=\"__box23-arrow\"]")).click();dropdown
        driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
        Thread.sleep(5000);
        driver.findElement(By.xpath("//*[@id=\"__item1283-__box23-2\"]")).click();

每次我的xpath更改//*[@id=\"__box23-arrow\ example //*[@id=\"__box24-arrow\时,我正在为SAP自动化,请提供其他解决方案

4 个答案:

答案 0 :(得分:0)

如果您知道ID的开头(在这种情况下始终是静态的),则可以进行

"//*[@id*='__box']"

这将为您提供ID以'__box'开头的元素

希望这会有所帮助!

答案 1 :(得分:0)

您也可以使用contains关键字编写动态xpath。

请参考下面的示例-

//a[contains(@id, 'ctl00_btnAircraftMapCell') 

答案 2 :(得分:0)

根据您与我们共享的HTML,您可以尝试使用此 xpath

//span[@role='button' and contains(@class,'sapMComboBoxArrow sapMComboBoxBaseArrow sapMComboBoxTextFieldArrow')]

答案 3 :(得分:0)

如果您的xpath始终在变化,则要使Selenium代码至少能够正常工作,应该有一些变化的方式,例如,它可能取决于当前日期。然后,您可以相应地进行编码,以在每次运行脚本时动态生成xpath。如果没有这样的模式,也没有静态内容可以在xpath中使用contains,则应该签出其他工具,例如Sikuli。它使用图像识别来识别您的元素。再次假设元素的可见方面保持不变。

诸如Testim之类的由AI驱动的新测试产品也正在涌现,这些产品具有“自我修复”功能,这意味着它们将适应源代码的变化。我没有用过它们,但它们可能就是您想要的。