如何使用 selenium 和 css 获取属性值

Posted

技术标签:

【中文标题】如何使用 selenium 和 css 获取属性值【英文标题】:how to get attribute value using selenium and css 【发布时间】:2011-11-04 07:20:27 【问题描述】:

我有以下 html 代码:

<a href="/search/?p=2&q=move&mt=1"> 2 </a>

我想获取href 中包含的内容,即,我正在寻找一个命令,它可以为href 提供“/search/?p=2&q=move&mt=1”值。

对于上述查询,有人可以帮助我使用 selenium 中的相应命令和 css 定位器吗?

如果我有类似的东西:

<a href="/search/?p=2&q=move&mt=1"> 2 </a> 
<a href="/search/?p=2&q=move&mt=2"> 3 </a> 

如果我要获得href的属性值,其文本包含'2',那么在这两个中,我的css定位器synatx会是什么样子?

【问题讨论】:

【参考方案1】:

如果您的 HTML 仅包含那个 &lt;a&gt; 标记,那么应该这样做:

String href = selenium.getAttribute("css=a@href");

您使用DefaultSelenium#getAttribute() method 并传入一个CSS 定位器、一个@ 符号以及您要获取的属性的名称。在这种情况下,您选择a 并获取它的@href

回应您的评论/编辑:

    @ 之后的部分告诉 Selenium 该部分是属性的名称。

    您应该将:contains('2') 放在@href 之前,因为它是定位器的一部分,而不是属性。所以,像这样:

    selenium.getAttribute("css=a:contains('2')@href");
    

【讨论】:

感谢 BoltClock,这很有帮助。我只是有几个与此相关的问题: 1. @ 是什么意思? 2. 如果我有类似的东西: 2 3 在这两个中,如果我要获得href 的属性值,其文本包含'2',那么我的css 定位器synatx 会是什么样子?我试过 selenium.getattribute("css=div#paginationContainer a@href:contains('2')") 但这给出了以下错误: 找不到元素属性:css=div#paginationContainer a@href:contains('2 ') 提前感谢 非常感谢您,它非常有帮助,它奏效了。实际上,我在同一方面还有一个查询。有没有办法使用 css 和 selenium 检查属性 href 是否存在于特定的 HTML 标记中。因此,例如,在上述情况下,如果我想检查包含文本“2”的 HTML 标记是否包含 href 属性?这可能吗?怎么做?非常感谢。 试试selenium.isElementPresent("css=a[href]:contains('2')") 太棒了,一切都很好。最后一个问题。这将是最后一次。今天学到了很多。好的,所以我需要检查页面上的某些文本是否为粗体。我该怎么做? 不确定,抱歉。 (我知道这是你的最后一个问题。)【参考方案2】:

将 css=a@href 更改为 href 应该可以解决问题。如果这不起作用,请告诉我。

    List<WebElement> ele = driver.findElements(By.className("c"));
        for(WebElement e : ele)
        
           String doctorname = e.getText();
           String linkValue = e.getAttribute("href");
        

【讨论】:

以上是关于如何使用 selenium 和 css 获取属性值的主要内容,如果未能解决你的问题,请参考以下文章

请教Python+selenium如何获取元素属性值问题

selenium如何获取已定位元素的属性值

如何使用 selenium webdriver C# 获取元素样式属性的值

selenium如何获取已定位元素的属性值?

js如何获取css文件内的一个属性值

获取 Selenium 中选定元素的所有 CSS 属性的值