【问题标题】:Selenium Jana- How to get the desired value from inside a <i> tagSelenium Jana- 如何从 <i> 标签中获取所需的值
【发布时间】:2015-10-03 16:23:32
【问题描述】:
<i data-html="true" data-placement="top" data-trigger="hover" data-original-title="Backend Offer Details" data-content="<dl class='dl-horizontal itemCodeHolder'><dt>Code : </dt><dd>BPAZ3XG</dd><dt>SOC : </dt><dd>No Matching SOC</dd></dl>" data-toggle="popover" class="icon-info-sign boPopover"></i>    

如何从这样的事情中获得价值。这是一个工具提示,我希望从上面的标签中获取 BPAZ3XG。在 Selenium 中怎么可能。

【问题讨论】:

  • 这个值就像是唯一的代码,它对每个新数据都是动态的......所以我需要一些能让我获得这个值的东西,尽管它是动态的。

标签: java selenium automation


【解决方案1】:

我不确定您是否有i 元素的定位器,所以我添加了一个代码,以防您没有。对于i 定位器,我假设data-original-title='Backend Offer Details' 在页面上是唯一的。如果不是,则必须对其进行调整。

基本上我找到i元素,得到data-content属性(这是一个小的HTML/XML sn-p),然后在first中寻找文本dd标签。注意:数据内容 HTML sn-p 中有 两个 dd 标签。

WebElement element = driver.findElement(By.cssSelector("i[data-original-title='Backend Offer Details']"));
String dataContent = element.getAttribute("data-content");
System.out.println(dataContent.substring(dataContent.indexOf("<dd>") + 4, dataContent.indexOf("</dd>")));

【讨论】:

    【解决方案2】:

    如果您的目标元素“BPAZ3XG”在 Web 应用程序中没有重复项,您可以尝试使用包含文本,如下所述

    //*[contains(text(),'BPAZ3XG')]
    

    为了解决这个问题,

    * 是一个匹配任何元素(即标签)的选择器——它返回一个节点集。

    [] 是在该节点集中的每个单独节点上操作的条件。如果它所操作的任何单个节点与括号内的条件匹配,则它匹配。

    text() 是一个选择器,它匹配作为上下文节点子节点的所有文本节点——它返回一个节点集。

    contains 是一个对字符串进行操作的函数。如果传递的是节点集,则通过返回节点集中文档顺序第一个节点的字符串值将节点集转换为字符串

    【讨论】:

    • 这篇文章的写法使它看起来像是评论,而不是答案。你可以编辑你的答案更具体吗?
    • 感谢大家给我的建议,我已经对我的回答进行了修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2013-10-29
    • 2019-12-29
    • 2023-02-01
    相关资源
    最近更新 更多