java - 在 FirefoxDriver 中选择 <li> 元素

标签 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>

我想在上面点击服务。我正在使用 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/

相关文章:

html - 无序列表帮助

html - 如何在不影响网页上其他列表的情况下设置特定网址的样式

css - ul-li 元素样式不正确

selenium-webdriver - 如何在 webdriver 中使用 firefoxprofile 消除 "allow <website> to run ' silverlight'?"在 Firefox 上的警报

java - 使用 Firefox 运行 Selenium WebDriver 测试不再适用于 Ubuntu

java - Android 查询 - 随机 SSLExceptions

java - 无法在 chrome 中运行 webdriver 测试

java - 使用java类进行flyway-db数据库特定迁移

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

Python Selenium - FireFox 网络驱动程序配置文件首选项中可能的键是什么