Selenium Jana-如何从 <i> 标签中获取所需的值

Selenium Jana- How to get the desired value from inside a <i> tag

<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 中怎么可能。

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

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

为了打破这个,

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

[] 是对节点集中的每个单独节点进行操作的条件。如果它操作的任何单个节点匹配括号内的条件,则它匹配。

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

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

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

基本上我找到 i 元素,获取 data-content 属性(这是一个小的 HTML/XML 片段),然后在 中查找文本第一个 dd 标签。注意:数据内容 HTML 代码段中有 两个 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>")));