【问题标题】:Selenium: Get Attribute Value Based on Visible Text?Selenium:根据可见文本获取属性值?
【发布时间】:2015-12-09 10:04:55
【问题描述】:

我正在使用 Java 和 Selenium。我知道我可以使用 getText() 方法获取可见文本/例如,如果我提供 ID(通过 XPath 或 CSS),我可以对此执行 getText() 以获取可见文本。但是,如果我想做相反的事情怎么办。假设我知道可见文本是什么,并且我想使用该文本来查找另一个属性?例如,假设我有以下 HTML 标记:

<div class="" title="Card"/>
<div id="99999cardName" class="cardName editInline" title="Click to edit">ZZZ</div>
<div id="99999cardNumber" class="cardNumber">4590 6565 6565 6565</div>

在这个例子中,假设我知道4590 6565 6565 6565 的值并且我想获得99999cardNumber 的值 - 我该怎么做?

谢谢

【问题讨论】:

    标签: java css selenium xpath


    【解决方案1】:

    以包含该元素文本的方式使用 xpath。这是怎么做的 -

    String idVal = driver.findElement(By.xpath("//div[contains(text(),'4590 6565 6565 6565')]")).getAttribute("id");
    System.out.println(idVal);
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢。 text() 就像在寻找可见的文本?类似于 @Id 但不是 @text?
    • 在 selenium 中没有 @text 作为 xpath 选择器。 @texttext()。所以上面的例子应该适合你。 text() 获取您指定的 html 元素内的值。
    • 如果我想对我已经找到的网络元素做同样的事情?如WebElement元素;
    • 然后你需要手动将找到的WebElement的文本与使用getText()的文本值进行比较,然后再获取它的属性。我想没有捷径可以通过使用其文本值来获取已找到的 WebElement 的属性。如果你能给出一个你确切需要的例子,那么我可以试试。
    • @NetNanny,XPath(和 selenium)确实支持@text,但这意味着“获取名称为text的属性”,类似于@id,如果在需要值的地方使用,它会返回属性的值:x[@id = 'tst']。表达式text() 称为NodeTest,它返回一个文本节点,与* 更相似,可以同样使用。要将所有文本节点获取到节点的任意深度,请使用 string(...) 函数。属性节点没有文本节点子节点,但元素节点有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多