适用于所有浏览器的带有xpath的Selenium自动化

时间:2016-05-26 04:13:38

标签: selenium xpath selenium-webdriver automation webdriver

我是selenium自动化的新手,我正在试图弄清楚如何处理为不同浏览器显示不同xpath的元素的代码。

//xpath for IE
 private readonly By ByPermIE = By.XPath("//*[@id='group-permissions']/div[1]/div[2]/span[2]");

//xpath for chrome
 private readonly By ByPermChrome = By.XPath("//*[@id='group-permissions']/div[1]/div[1]/span[2]");

如果我在不同浏览器上对此元素执行某些操作,我如何在测试用例中使用这些元素。我计划将其扩展到另外三个浏览器。那么,我应该在其他地方使用if else条件吗?对于此类案件,是否还有其他最佳做法?

4 个答案:

答案 0 :(得分:1)

您可以在xpath下面使用xpath。

private readonly By ByPermChrome = By.XPath("//*[@id='group-permissions']/div[1]//span[text() = 'text that span contains']");

答案 1 :(得分:0)

您可以将xpath写为尽可能相对。不建议写绝对xpath。

对于您的上述情况,请使用xpath以下的浏览器。

By.XPath("//*[@id='group-permissions']//span[2]");

By.XPath("//*[@id='group-permissions']//span[text()='someThing']");

有关xpath的更多信息,请参阅this

答案 2 :(得分:0)

如果你发布你的HTML代码,那将很容易。但由于没有给出html,我可以建议你如下:

//u can use if condition here
if(driver.findElements(By.XPath("//*[@id='group-permissions']/div[1]/div[2]/span[2]")).size()==1){

    //perform operation here
}

else
    //perform operation here

这是另一种方法,因为没有HTML代码。

如果你给出html代码,我想我们可以建议你更多

答案 3 :(得分:0)

我可以给出的一个建议是你可以在xpaths中使用OR条件。说OR OR。 一旦遇到第一个正确的Xpath OR,它就会返回成功。