在FirefoxDriver中选择<li>元素</li>

时间:2013-07-26 04:48:44

标签: java html-lists selenium-firefoxdriver

我想点击页面中的列表项。

<ul class="categories" id="cat1">
    <li onClick="chooseCateg(this.form, '315', 1);">Business Opp.</li>
    <li onClick="chooseCateg(this.form, '269', 1);">Cars / Trucks</li>
    <li onClick="chooseCateg(this.form, '301', 1);">Community</li>
    <li onClick="chooseCateg(this.form, '6', 1);">For Sale</li>
    <li onClick="chooseCateg(this.form, '4', 1);">Jobs</li>
    <li onClick="chooseCateg(this.form, '3', 1);">Pets</li>
    <li onClick="chooseCateg(this.form, '2', 1);">Real Estate</li>
    <li onClick="chooseCateg(this.form, '7', 1);">Services</li>
</ul>

从上面我想点击Services。我正在使用FirefoxDriver

那我怎么能实现呢?帮助我。

2 个答案:

答案 0 :(得分:1)

你可能会因此而感到困惑的原因是你不知道XPath expressions

numerous strategies how to locate elements in WebDriver

这些都是不言自明的,应该尽可能使用:

  • By.id
  • By.name
  • By.className
  • By.tagName

应谨慎使用这些内容,因为有时看似链接的内容实际上并不是真正的<a>元素。

  • By.linkText
  • By.partialLinkText

这些是最强大,最先进的策略,可以匹配大部分“我不知道该怎么做”的东西。

  • By.cssSelector
  • By.xpath

学习并选择CSS selectors,因为它们通常更短,更易读。它们也更快匹配。但它们有它们的缺点 - 最明显的是它们无法匹配文本。

这就是XPath expressions发挥作用的地方,它们可以在明智地使用时匹配(几乎)所有内容。它们是最慢的并且难以阅读,因为它们很容易变得松散。阅读规范的有趣部分,在线查找一些教程并学习它们。

现在,您可以在这里找到Services元素:

WebElement services = driver.findElement(By.xpath("//li[text()='Services']"));

XPath表达式本身:

//li[text()='Services']

只是让你知道,当你看到它时不要害怕它,这可以(通常也)写成:

//li[.='Services']

答案 1 :(得分:0)

这里By.cssSelector将是最完美的

driver.findElement(By.cssSelector(“#cat1&gt; li:contains('Services')”))

请告诉我上述方法是否有效。