0

我在尝试使用 Arquillian Drone + Graphene 编写自动化 webUI 测试时使用 xpath 定位元素时遇到问题。为了弄清楚我试图在谷歌主页上找到搜索按钮。即使我没有完成。既不是绝对的也不是相对的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。

4

1 回答 1

1

您的表达式在 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]/imgChome 42 上。

编辑:在聊天中讨论之后,我们发现 HTMLUNIT 确实在创建一个不同于真正浏览器呈现的 DOM。建议迁移到 FirefoxDriver

于 2015-06-29T10:00:56.307 回答