【问题标题】:Selenium WebDriver Finding Element by Partial Class NameSelenium WebDriver 按部分类名查找元素
【发布时间】:2015-01-18 21:35:29
【问题描述】:

在我正在使用的框架中,我有以下元素:

<div class="x-grid3-cell-inner x-grid3-col-expRepCol">  New session from client IP 192.168.5.3 (ST=/CC=/C=) at VIP 192.168.5.2 Listener /Common/Tomcat (Reputation=Unknown)</div>

以及许多其他类似的元素。我正在尝试通过部分名称文本定位此元素并使用以下代码单击它:

String expectedText = "New session from client IP";
driver.findElement(By.className("div[class*='"+expectedText+"']")).click();

我也尝试过使用 cssSelector:

String expectedText = "New session from client IP";
driver.findElement(By.cssSelector("div[class*='"+expectedText+"']")).click();

但是 WebDriver 不断抛出异常,说明它无法找到该元素。关于可能是什么问题的任何建议?

【问题讨论】:

    标签: java firefox selenium selenium-webdriver


    【解决方案1】:
    <div class="dd algo algo-sr Sr" data-937="5d1abd07c5a33">
    <div class="dd algo algo-sr fst Sr" data-0ab="5d1abd837d907">
    

    以上 2 是 yahoo 搜索结果中的 HTML 元素。因此,如果我们想通过 selenium python 使用部分类名来获取这些元素,这就是解决方案。

    driver.find_element_by_css_selector("div[class^='dd algo algo-sr']")
    

    以同样的方式,我们可以获取任何属性值部分匹配的元素,如类名、id 等。

    find elements with css selector partial match on attribute values

    【讨论】:

      【解决方案2】:

      我相信这会奏效:

      driver.findElement(By.className("x-grid3-cell-inner x-grid3-col-expRepCol").click();
      

      【讨论】:

        【解决方案3】:

        By.className 正在寻找具有输入名称的类。

        By.cssSelector 正在为您输入的选择器寻找匹配项。

        您正在尝试将div 的文本与class 进行匹配,这是行不通的。

        你可以试试这样的:

        driver.findElement(By.xpath("//div[contains(text(),'"+expectedText+"')]")).click();
        

        【讨论】:

        • 您只是忘记了 div 前面的 // 但一旦我进行了更正,它就起作用了!谢谢!
        • @user2150250 啊,伙计,你是对的。对于那个很抱歉。固定。
        • 没问题。当您无法测试时,您并没有可以处理如此少的错别字的页面源代码。
        • expectedText 包含单引号时抛出异常。我尝试用反斜杠转义它们无济于事。有什么方法可以在expectedText 中使用单引号?
        • @user2150250 我发现了这个:stackoverflow.com/questions/12403870/… - 我希望它有用。
        猜你喜欢
        • 2020-05-19
        • 2021-03-05
        • 2023-01-03
        • 1970-01-01
        • 2021-03-31
        • 1970-01-01
        • 2017-08-05
        • 2015-07-12
        • 1970-01-01
        相关资源
        最近更新 更多