使用 XPATH 定位 WebElements (NoSuchElementException)
Locating WebElements using XPATH (NoSuchElementException)
我在尝试使用 Arquillian Drone + Graphene 编写自动化 webUI 测试时遇到了使用 xpath 定位元素的问题。
为了解决问题,我尝试在 google homepage 上找到搜索按钮。即使我没有完成。既没有绝对的也没有相对的 xpath。
但是,我可以使用 ID 或 xpath 字符串中包含 ID 来定位元素。但前提是ID是真实ID,不生成。例如在 google 主页上: google-logo 有一个真实的 ID "hplogo"。我可以通过直接使用 ID 或 xpath 表达式中的 ID 来定位此元素。
为什么可以使用 ID "hplogo" 定位 google 徽标,但在使用绝对 xpath "/html/body/div[1]/div[5]/span/center/div[1]/div/div"
时却失败了?
我真的很困惑。我究竟做错了什么?感谢您的帮助!
编辑:
WebElement e = browser.findElement(By.xpath("/html/body/div[1]/div[5]/span/center/div[1]/div/div"));
导致 NoSuchElementException。
你的表达有效
Firefox,但在基于 webkit 的浏览器(例如 chrome)上呈现的 DOM 有点不同。也许这取决于本地化(对我来说 google.co.uk)。如果我强制 google.com 我的图像标志是:
/html/body/div/div[5]/span/center/div[1]/img
在 Firefox 37 上,/html/body/div/div[6]/span/center/div[1]/img
在 Chome 42 上。
编辑:
在聊天中讨论后,我们发现 HTMLUNIT 确实创建了一个 DOM 与真实浏览器呈现的不同。建议迁移到 FirefoxDriver
我在尝试使用 Arquillian Drone + Graphene 编写自动化 webUI 测试时遇到了使用 xpath 定位元素的问题。 为了解决问题,我尝试在 google homepage 上找到搜索按钮。即使我没有完成。既没有绝对的也没有相对的 xpath。
但是,我可以使用 ID 或 xpath 字符串中包含 ID 来定位元素。但前提是ID是真实ID,不生成。例如在 google 主页上: google-logo 有一个真实的 ID "hplogo"。我可以通过直接使用 ID 或 xpath 表达式中的 ID 来定位此元素。
为什么可以使用 ID "hplogo" 定位 google 徽标,但在使用绝对 xpath "/html/body/div[1]/div[5]/span/center/div[1]/div/div"
时却失败了?
我真的很困惑。我究竟做错了什么?感谢您的帮助!
编辑:
WebElement e = browser.findElement(By.xpath("/html/body/div[1]/div[5]/span/center/div[1]/div/div"));
导致 NoSuchElementException。
你的表达有效
Firefox,但在基于 webkit 的浏览器(例如 chrome)上呈现的 DOM 有点不同。也许这取决于本地化(对我来说 google.co.uk)。如果我强制 google.com 我的图像标志是:
/html/body/div/div[5]/span/center/div[1]/img
在 Firefox 37 上,/html/body/div/div[6]/span/center/div[1]/img
在 Chome 42 上。
编辑: 在聊天中讨论后,我们发现 HTMLUNIT 确实创建了一个 DOM 与真实浏览器呈现的不同。建议迁移到 FirefoxDriver