如何通过 Xpath、C# 和 Selenium 从元素内的文本节点检索文本



我是一名测试自动化工程师,过去几年一直在硒工作 这是我在Stackoverflow的第一篇文章。

我正在尝试从元素中获取文本,但硒甚至无法识别元素。我正在使用Visual Studio中的specflow设置和c#作为语言。

下面是示例 html 代码(这只是 HTML 代码的示例结构,而不是原始结构(:

<p class="day">
<meta atts="somevalue">
<span>Some text</span>
<meta atts="somevalue">
<meta atts="somevalue">
"Active"
</p>

我想从上面的 HTML 中获取文本活动

我为此编写了多个 xpath,当我在 chrome 中检查它时,xpath 是正确的并且它突出显示了元素

Xpaths试用版 :

1. //p[@class='day']/text()
2. //p[@class=''day]/meta[@atts='somevalue'][3]/following-sibling::text()
3. few more..

对于所有 xPath,text()介于两者之间或末尾。 当我手动检查它时,所有这些都是正确的和唯一的。

我正在自动化的网页中不涉及任何框架。 也没有页面加载问题。 我尝试过使用不同的等待语句。 还尝试过给出一个长线程.sleep((。

元素的位置始终相同。 只有其中的值会更改。 也就是说,此元素的 XPath 不是动态的。

我在下面一行收到错误。(驱动程序已正确初始化,它适用于其他所有内容(

String StatusVal = driver.FindElement(By.XPath("(//meta[@itemprop='closes'])[1]/following-sibling::text()")).Text;

无论我尝试什么,我都收到以下错误,说找不到元素,

OpenQA.Selenium.NoSuchElementException: Could not find element by: By.XPath: (//meta[@itemprop='closes'])[1]/following-sibling::text()

以上是实际的 xpath,如果我在同一浏览器中测试失败后手动检查 xpath,它在那里可用并且它是唯一的。

即,在我的分析中,我的 XPath 是正确的,不涉及帧,页面中没有等待问题,因为我正在成功对 near by 元素执行操作,并且我给了足够的时间来加载页面。 所有正常的硒设置都是在我的系统中完成的,除了这个之外,一切都运行良好。

硒版本:3.12.0

根据您提供的用于检索文本ActiveHTML,您可以使用ExecuteScript()方法IJavaScriptExecutor Interface如下所示:

IWebElement myElem = driver.FindElement(By.XPath("//p[@class='day']"));
string myText = (string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].lastChild.textContent;", myElem);
Console.WriteLine(myText);

相关内容

  • 没有找到相关文章

最新更新