如何使用 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 仅包含那个 <a>
标记,那么应该这样做:
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 获取属性值的主要内容,如果未能解决你的问题,请参考以下文章