我一直在尝试使用selenium来点击包含名为bullet的类的span元素。这是一个树形结构,一旦点击它就会扩展它的孩子。我尝试过以下方式,但它没有用。 以下是UI代码
<ul id="treelist" class="ltree">
<li class="liClosed">
<span class="bullet"> </span>
<b>Setup</b>
<ul>
<li></li>
<li></li>............
.....................
</ul>
</li>
</ul>
错误是: 给定的选择器// * ul [@ id ='treelist'] // li [2] // span无效或不会产生WebElement
我使用的代码是:
WebDriver driver = new FirefoxDriver();
driver.get("http://somewebapp");
WebElement userElement = driver.findElement(By.xpath("//*ul[@id='treelist']//li[2]//span"));
我尝试了很多编辑xpath的方法,但是没有成功。有人可以帮忙解决这个问题吗?
答案 0 :(得分:1)
XPath表达式确实无效,请在*
之前移除ul
:
//ul[@id='treelist']//li[2]//span
以下是找到所需span
标记的另一种方法:
//ul[@id='treelist']//span[@class='bullet']
或者,使用 CSS选择器:
driver.findElement(By.cssSelector("ul#treelist span.bullet"));
答案 1 :(得分:0)
如果您不与XPath绑定,可以尝试使用简单的CSS选择器。
WebElement userElement = driver.findElement(By.cssSelector("span.bullet"));
看起来你需要处理框架内存在的元素。你可以谷歌大量的如何做到这一点的例子,但这里有一个来自SO。
Find elements inside forms and iframe using Java and Selenium WebDriver
答案 2 :(得分:0)
您的span.bullet is not
在第二个li
内,它位于第一个//ul[@id='treelist']//li[1]//span
内。试试
server.js