我在尝试使用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。
答案 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