Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对所有浏览器的带xpath的Selenium自动化_Selenium_Xpath_Selenium Webdriver_Automation_Webdriver - Fatal编程技术网

针对所有浏览器的带xpath的Selenium自动化

针对所有浏览器的带xpath的Selenium自动化,selenium,xpath,selenium-webdriver,automation,webdriver,Selenium,Xpath,Selenium Webdriver,Automation,Webdriver,我是selenium automation的新手,我正试图弄清楚如何处理针对不同浏览器显示不同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

我是selenium automation的新手,我正试图弄清楚如何处理针对不同浏览器显示不同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]");
By.XPath("//*[@id='group-permissions']//span[2]");

如果我在不同的浏览器上对这个元素执行一些操作,我如何在测试用例中使用这些元素。我计划将其扩展到另外三种浏览器。那么,我应该在所有地方使用if-else条件吗?对于这种情况,有其他最佳实践吗?

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

对于上述情况,请使用在两种浏览器中都适用的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]");
By.XPath("//*[@id='group-permissions']//span[2]");


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

如果您发布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代码,我想我们可以建议你更多的是

这里我可以给你的一个建议是你可以在XPath中使用或条件。说或不说。
Xpath或在命中第一个正确的值时返回successful

您可以在您的案例中使用下面的xpath

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

您能发布HTML代码吗?共享HTML可能有助于思考其他实践。如果您在基类中定义了一个方法并在测试用例中调用该方法(继承概念),解决方案还取决于您是如何设计自动化框架的这是使用CSS选择器而不是XPath的一个很好的用例。如果您向我们展示相关的HTML,我们可能会推荐一个适用于任何浏览器的CSS选择器。