如何使用 css 选择器提取属性值?

Posted

技术标签:

【中文标题】如何使用 css 选择器提取属性值?【英文标题】:How to extract attribute values using css selectors? 【发布时间】:2010-12-30 15:43:11 【问题描述】:

我想选择一个元素的属性值。例如,如果我有一个输入元素

<input type="text" name=myInput value="100">

我可以使用input[name='myInput'] 找到它,但是如何使用 css 选择器获取它的值?

顺便说一句,我正在尝试使用 css 选择器在 Selenium 中执行此操作

【问题讨论】:

如果您对您用于“选择”和“定位”的技术提供一些提示,将会很有帮助。 XSLT 中的 XPath? javascript 使用 DOM? JavaScript 和 jQuery?有太多的猜测。 抱歉,这是在 Selenium 中。我正在尝试使用 CSS 选择器(而不是 XPath)来获取输入元素的值。 显然另一个人问了一个类似的问题,但是那个人并没有试图提取他在***.com/questions/1909584/xpath-to-css-selector之后的输入元素的值 在您下面的回复中,您提到您正在使用 Selenium。请将您的问题标题更改为“如何使用 Selenium 提取属性值”以获得更好的响应。 什么语言在 Perl 中使用 Selenium? 【参考方案1】:

您可能想解释一下您要如何处理该值。例如,我有以下 CSS 来显示打印样式表中“#content”元素中的链接文本:

#content a:link:after, #content  a:visited:after 
    content: " (" attr(href) ") ";
    font-size: 90%;


#content a[href^="/"]:after 
    content: " (http://example.com" attr(href) ") ";

【讨论】:

我有一个表格,其中每一行都有一个带值的输入元素。我必须读取所有这些值并作为数组返回。这有帮助吗?只是补充一下,我通过 table[class='tbl']>tbody>tr:nth-child(1)>td:nth-child(1)>input 得到它现在我需要找出值该输入元素的属性【参考方案2】:

如果在 Perl 中使用 WWW::Selenium 那么它很简单:

my $val = $selenium->get_value("css=input[name='myInput']");

如果使用其他语言,那么 Selenium 库应该支持 get_value 函数/方法。

【讨论】:

啊哈!那是我的问题。我没有使用“css =”。谢谢。 顺便说一句,这个问题的另一个附录 - 如果我有其他属性怎么办?假设我有一个复选框,并且我想获取该复选框的 id 或其 onclick 属性等。是否有任何通用方法来获取元素的任何属性的值? 如果基本的 Selenium API 没有处理您所追求的,那么总会有 get_eval() 允许您编写 javascript 代码并返回您想要的任何内容:innerhtml、javascript 变量、元素属性等。 示例:my $txt = $selenium-&gt;get_eval('document.getElementById("foo").title');【参考方案3】:

您可以使用以下内容:

 WebDriver driver=new FirefoxDriver();
    String nameAttribute=driver.findElement(By.cssSelector("Your css selector")).getAttribute("name")

【讨论】:

【参考方案4】:

你最喜欢的 JavaScript 库应该有办法做到这一点:

jQuery

$("input[name=myname]").val()

原型的 CSS 选择器方法是 $$() iirc。

对于本示例,您也可以使用本机 document.getElementsByName() 方法。

【讨论】:

我之前应该添加的。我正在尝试在 Selenium 中执行此操作,并且我正在尝试使用 selenium 理解的 CSS 定位器来提取价值。所以我想,我得看看 Selenium 用于 CSS 评估的 JS 库。 请将标签 Selenium 添加到您的问题中,并通过在其中某处添加“in Selenium”来重新措辞。【参考方案5】:

在 Java Selenium WebDriver 中有两种方法可以做到这一点

driver.findElement(By.name("myInput")).getText() driver.findElement(By.name("myInput")).getAttribute(value)

【讨论】:

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

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

如何使用属性选择器

选择器提取内容

如何使用属性选择器

如何使用 CSS 选择器通过其 innerHTML 值获取 Child? [复制]

JMETER CSS JQUERY EXTRACTOR