单击selenium中li中存在的span元素

时间:2015-10-14 16:12:46

标签: javascript java html selenium

我一直在尝试使用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的方法,但是没有成功。有人可以帮忙解决这个问题吗?

3 个答案:

答案 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