使用XPATH定位WebElements(NoSuchElementException)

时间:2015-06-29 09:29:12

标签: xpath selenium-webdriver webdriver arquillian-drone

我在尝试使用Arquillian Drone + Graphene编写自动webUI测试时遇到使用xpath定位元素的问题。 为了解决问题,我尝试在google homepage上找到搜索按钮。即使我没有完成。绝对或相对xpath都没有。

但是,我能够使用ID或xpath字符串中包含ID来定位元素。但仅当ID是真实ID且未生成时。例如,在谷歌主页上:谷歌徽标有一个真实的ID“hplogo”。我可以直接使用xpath-expression中的ID或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。

1 个答案:

答案 0 :(得分:1)

你的表达有效 Firefox,但在基于webkit的浏览器(例如,chrome)上,渲染的DOM有点不同。也许这取决于本地化(google.co.uk对我来说)。如果我强行google.com,我的图片徽标是: firefox 37上的/html/body/div/div[5]/span/center/div[1]/img和Chome 42上的/html/body/div/div[6]/span/center/div[1]/img

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