我是一名测试自动化工程师,过去几年一直在硒工作 这是我在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
根据您提供的用于检索文本Active的HTML,您可以使用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);