【问题标题】:How to extract attribute values using css selectors?如何使用 css 选择器提取属性值?
【发布时间】: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)来获取输入元素的值。
  • 显然另一个人问了一个类似的问题,但是那个人并没有试图提取他在stackoverflow.com/questions/1909584/xpath-to-css-selector之后的输入元素的值
  • 在您下面的回复中,您提到您正在使用 Selenium。请将您的问题标题更改为“如何使用 Selenium 提取属性值”以获得更好的响应。
  • 什么语言在 Perl 中使用 Selenium?

标签: java selenium css-selectors


【解决方案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)

    【讨论】:

      猜你喜欢
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多