0

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

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

为什么我必须分离这样的 xpath 查询才能在 Selenium 测试用例中获得一个相同的元素:

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 查询在两个浏览器控制台中都有效。

提前致谢!

4

2 回答 2

0

尝试编写自己的 xPaths / CSS 选择器,而不是依赖基于浏览器的选择器。此链接将帮助您学习/编写自己的选择器。

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

于 2016-11-25T11:44:59.537 回答
0

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

感谢@noor 和@Kenil Fadia

于 2017-02-01T14:05:31.307 回答