如何构造元素的Xpath

时间:2013-11-09 12:20:47

标签: xpath selenium selenium-webdriver selenium-ide

Selenium IDE 自动生成的 Xpath 无效,我的意思是脚本失败,因为它找不到任何元素这样的Xpath?

有没有办法生成Xpath 手动

<div id="ext-gen1252" class="x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-last x-unselectable" role="button" style="-moz-user-select: none;"></div>

这是Drop down的HTML,这让我感到烦恼。

driver.findElement(By.xpath("//div[2]/div/div/div/div/div/div[6]/em/button")).click();

这是java / webdriver,因为它是从IDE导出的

请尽快给我一些解决方案

谢谢!

3 个答案:

答案 0 :(得分:2)

IDE和FirePath等工具只能在一定程度上为您提供帮助。你问题中的xpath示例就是一个很好的例子。它不仅具有非功能性,而且很难猜测它所针对的是哪个元素。什么是解决方案?学习如何自己构建Xpath或CSS。网上有很多例子。这是XpathCSS

至于你的问题,xpath应该是,

driver.findElement(By.xpath(".//div[@class='x-trigger-index-0']").click();

我强烈推荐CSS selectors超过xpath,其原因也在Selenium社区中有详细记录。

driver.findElement(By.cssSelector("div[class='x-trigger-index-0']").click();

答案 1 :(得分:0)

是的,你可以创建,例如: 下面是显示Html,然后是body然后div []等等。 它会创建像“Html / body / div” 您可以像这样创建xpath。

<document>
<html itemtype="http://schema.org/WebPage" itemscope="">
<head>
<body id="gsr" class="hp vasq" vlink="#61c" text="#222" link="#12c" bgcolor="#fff" alink="#dd4b39" onload="try{if(!google.j.b){document.f&&document.f.q.focus();document.gbqf&&document.gbqf.q.focus();}}catch(e){}if(document.images)new Image().src='/images/nav_logo170.png'">
<div id="viewport" class="ctr-p">

答案 2 :(得分:0)

firepath和xpath helper以及许多其他扩展只是基于id元素生成,它通常不是你想要的。

如果你正在使用chrome,你可以尝试extension,它通过指向元素来巧妙地生成xpath