首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium,如何获得第二个包装双引号的文本?

Selenium,如何获得第二个包装双引号的文本?
EN

Stack Overflow用户
提问于 2021-09-29 04:12:13
回答 3查看 559关注 0票数 3

我得到这个网页来测试这个元素中是否包含某个关键字。

代码语言:javascript
运行
复制
<div>
"&nbsp;"
"Network interface updated successfully"
</div>

这是HTML代码,我试图获得的xpath是

代码语言:javascript
运行
复制
//div[contains(text(),'interface')]

但是这个xpath根本找不到这个元素。所以我尝试了不同的方法来找出它是如何工作的。

代码语言:javascript
运行
复制
//div/text()[2]

这个xpath与元素相匹配,但它不是我的最佳实践。

我附上了屏幕截图我所遭受的……

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-29 05:02:21

我在这里发现了与你的例子相似的东西

现在,如果您希望将整个文本包含在该元素中,并且不希望通过脚本进行索引,则可以通过java脚本执行器进行索引。

使用java脚本执行器运行下面的语句,它将返回整个文本,一旦您获取文本,您就可以断言它是否包含预期的文本。

返回$x("//div@class='jconfirm-content'//div//div").textContent‘

票数 1
EN

Stack Overflow用户

发布于 2021-09-29 04:39:46

如果你这么确定第二个元素有文本。请使用以下代码。

代码语言:javascript
运行
复制
List<WebElement> rows = driver.findElements(By.xpath("your xpath"));
String secondTxt = rows.get(1).getText();

元素索引从0开始,因此下面是匹配的第0元素包含第1文本第1元素包含第2文本

如果文本索引在每个运行时都在更改,则不应根据索引获取文本。您应该迭代每个元素并获得文本.

票数 0
EN

Stack Overflow用户

发布于 2021-09-29 06:35:07

它们不是纯文本,而是文本节点。如果应用/text() selenium会引发错误,因为Selenium不支持它,请使用JavascriptExecutor

代码:

代码语言:javascript
运行
复制
WebElement e = driver.findElement(By.xpath("//span[contains(@class, 'jconfirm-content')]//child::div[1]"));
String el = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].childNodes[1].textContent;", e);
System.out.println(el);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69370314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档