簡體   English   中英

如何通過Xpath,C#和Selenium從元素內的文本節點中檢索文本

[英]How to retrieve the text from a text node within an element through Xpath, C# and 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中獲取文本Active

我為此編寫了多個xpath,當我在chrome中檢查時,xpaths正確,並且突出顯示了元素

Xpaths試用:

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

對於所有xpaths text()介於兩者之間或末尾。 當我手動檢查時,所有這些都是正確和獨特的。

我正在自動化的網頁中沒有涉及框架。 也沒有頁面加載問題。 我嘗試了不同的等待語句。 還嘗試給出一個長thread.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是正確的,沒有涉及框架,在頁面中沒有等待問題,因為我成功地對元素執行了近距離操作,並且給了我足夠多的時間來加載頁面。 所有正常的硒設置都在我的系統中完成,除此以外,其他一切工作正常。

硒版本:3.12.0

根據您提供的用於檢索文本ActiveHTML ,可以從IJavaScriptExecutor Interface使用ExecuteScript()方法,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM