【问题标题】:Select <li> element in FirefoxDriver在 FirefoxDriver 中选择 <li> 元素
【发布时间】:2013-07-26 04:48:43
【问题描述】:

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

<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

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

【问题讨论】:

    标签: java html-lists selenium-firefoxdriver


    【解决方案1】:

    你之所以会卡在这个问题上,可能是因为你不知道XPath expressions

    numerous strategies how to locate elements in WebDriver:

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

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

    应谨慎使用,因为有时看似链接的内容实际上并不是真正的 &lt;a&gt; 元素。

    • 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']
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-03
        • 1970-01-01
        • 2015-04-01
        • 2019-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        相关资源
        最近更新 更多