[英]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
根據您提供的用於檢索文本Active的HTML ,可以從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.