为什么在Selenium测试中,chrome和firefox / firebug的xpath定位器不同

时间:2016-11-22 12:18:59

标签: selenium-webdriver selenium-chromedriver geckodriver

在chrome中

我得到一个xpath值: //*[@id='user_change_pw_form']/div[3]/span

对于萤火虫中的相同元素我得到: /html/body/div[2]/form/div[3]/span

为什么我必须像这样分配xpath查询以获得Selenium testcase中的同一个元素:

switch (System.getProperty("test.driver")) 
        {
            case "chrome":
            case "html":
                text = driver.findElement(By.xpath("//*[@id='user_change_pw_form']/div[3]/span")).getText();


            case "gecko":
                text = driver.findElement(By.xpath("/html/body/div[2]/form/div[3]/span")).getText(); 
                break;

        }

虽然相应的对应方给出了错误的浏览器“无法找到元素”,但两个xpath查询都适用于两个浏览器控制台。

提前致谢!

2 个答案:

答案 0 :(得分:0)

尝试编写自己的xPaths / CSS选择器,而不是依赖基于浏览器的选择器。这个link可以帮助您学习/编写自己的选择器。

我还建议在xpaths上使用css选择器,因为它们更具可读性。

答案 1 :(得分:0)

firefox有绝对的xpath,无法处理chrome的xpath。

感谢@noor和@Kenil Fadia