如何使用 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->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 选择器提取属性值?的主要内容,如果未能解决你的问题,请参考以下文章