我需要唯一地标识一个元素,但是该元素没有任何标签。请帮助您唯一地标识该元素吗?
<div class="mbs2_support ng-binding"><strong>Customer care? </strong>Phone 999 888 777 6</div>
在这里,我只需要识别电话号码列,而无需“客户服务”部分。 突出显示的一个(附有屏幕截图)我需要识别。我尝试按照xpath进行操作,但是它占用了整行(包括客户列)
//div[contains(text(), ' Phone 999 888 777 6')]
//div[text()[normalize-space()='Phone 999 888 777 6']]
答案 0 :(得分:1)
“ ...元素没有任何标签” 实际上是不正确的。必需的文本节点是div
的子节点。您可以使用下面的JavaScript(使用JavaScriptExecutor)来获取它:
'return document.querySelector("div.mbs2_support").lastChild.textContent;'
答案 1 :(得分:0)
只需提取差异的text()子,<strong>
中的文本就是孙子,因此将不包括在内:
//div[contains(., 'Phone ')]/text()
答案 2 :(得分:0)
您要标识的元素是父标签text Node
的子标签<div>
。
根据您提供的用于提取文本 Phone 999 888 777 6 的 HTML ,您可以使用executeScript()
方法,如下所示:
WebElement myElement = driver.findElement(By.xpath("//div[@class='mbs2_support ng-binding']"));
String myText = ((JavascriptExecutor)driver).executeScript('return arguments[0].lastChild.textContent;', myElement).toString();
答案 3 :(得分:0)
WebElement element = driver.findElement(By.xpath("//div[contains(@class,'mbs2_support')]"));
String getText = ((JavascriptExecutor)driver).executeScript('return arguments[0].lastChild.textContent;', element).toString();
获取元素并解析字符串。 javascript中的lastChild可以解决问题:https://www.w3schools.com/jsref/prop_node_lastchild.asp