0

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

<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.

那么我该如何实现呢?帮帮我。

4

2 回答 2

1

您可能会遇到这种情况的原因是您不知道XPath 表达式

在 WebDriver 中定位元素有很多策略:

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

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

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

  • By.linkText
  • By.partialLinkText

这些是最强大、最先进的策略,能够匹配你大多数“我不知道该怎么做”的东西。

  • By.cssSelector
  • By.xpath

学习并喜欢CSS 选择器,因为它们通常更短且更具可读性。它们的匹配速度也更快。但它们也有缺点——最明显的是它们无法匹配文本。

这就是XPath 表达式发挥作用的地方,如果使用得当,它们可以匹配(几乎)所有内容。它们最慢且难以阅读,因为它们很容易变得冗长。阅读规范中有趣的部分,在网上找到一些教程并学习它们。

现在,这里是你如何找到你的Services元素:

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

XPath 表达式本身:

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

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

//li[.='Services']
于 2013-07-26T08:25:03.953 回答
0

这里 By.cssSelector 将是完美的选择

driver.findElement(By.cssSelector("#cat1 > li:contains('Services')"))

请让我知道上述方法是否有效。

于 2014-04-07T10:23:19.877 回答