首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium:如何在包含html标记的页面上找到文本?(文本节点)

Selenium:如何在包含html标记的页面上找到文本?(文本节点)
EN

Stack Overflow用户
提问于 2021-07-21 09:38:28
回答 2查看 661关注 0票数 0

我回答了问题后更新了这个问题!

我试图在网页上的列表中找到一个文本,其中包含一个类似于<p> text </p>的html标记。

这是一个截图,它在网页上的样子:要搜索的文本的截图

在“检查”中,我使用了//*[text()='<p> First do this, then this</p>'],如上面的屏幕截图所示。

在代码im中,使用此代码查找文本:

代码语言:javascript
运行
复制
webDriver.FindElement(By.XPath("//*[text()='<p> First do this, then this</p>']"))

但是,在测试运行期间,它会给出以下错误消息:

OpenQA.Selenium.NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//*text()=‘首先这样做,然后这个’}

如您所见,selenium确实忽略了html标记<p> </p>

答案与解决方案--来自cruisepandey:

多亏我现在知道的@cruisepandey,我的文本在文本节点中。获取文本的唯一方法是使用以下代码:

代码语言:javascript
运行
复制
var ele = webDriver.FindElement(By.XPath("//table[@class='mud-table-root']//tbody/tr[1]/td[2]"));
        Console.WriteLine(ele.Text);

这里的输出是:<p> First do this, then this</p>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-21 09:46:30

这是一个文本节点,不能简单地使用XPathv1.0中的text()方法

您可以尝试使用下面的xpath:

代码语言:javascript
运行
复制
(//table[@class='mud-table-root']//tbody/tr)[1]/td[2]

代码:

代码语言:javascript
运行
复制
var ele = webDriver.FindElement(By.XPath("//table[@class='mud-table-root']//tbody/tr[1]/td[2]/text()"));
Console.WriteLine(ele.Text);

代码(包含显式等待) :在您想要点击它。

代码语言:javascript
运行
复制
var ele = new WebDriverWait(webDriver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("(//table[@class='mud-table-root']//tbody/tr)[1]/td[2]")));
Console.WriteLine(ele.Text);
票数 0
EN

Stack Overflow用户

发布于 2021-07-21 09:43:53

p是元素标记名,而不是其文本的一部分。

文本中也可能有空格。在这种情况下,我更喜欢使用contains而不是精确的等式文本检查。

试一试:

代码语言:javascript
运行
复制
webDriver.FindElement(By.XPath("//p[contains(text(),'First do this, then this')]"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68467262

复制
相关文章

相似问题

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