我想单击页面中的列表项。
<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>
我想在上面点击服务
。我正在使用 FirefoxDriver
。
那么我怎样才能实现它呢?帮帮我。
最佳答案
您之所以陷入困境,可能是因为您不知道 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']
关于java - 在 FirefoxDriver 中选择 <li> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17873124/