簡體   English   中英

Selenium WebDriver 找到 object 文本。 錯誤 xpath 表達式的結果是:[對象文本]。 它應該是一個元素

[英]Selenium WebDriver find object text. Errors out with The result of the xpath expression is: [object Text]. It should be an element

我正在使用 Selenium 來驗證 web 頁面中是否存在某些文本。 這就是 html 的樣子。

<html>
<div class="a-content">
 <!--!-->==$0
 "
        Text to Find"
 <br>
 <br>
 "
        Second Text to find"
 <br>
</div>

我能夠識別此文本的唯一方法是通過 xpath。

//div[contains(@class, 'a-content')]//br[1]/preceding-sibling::text()[1] 

我無法使用常規方式識別此元素,因為它返回 object 文本而不是元素。

var x = webDriver.FindElement(By.XPath("//div[contains(@class, 'a-content')]//br[1]/preceding-sibling::text()")).Text;

這是我得到的錯誤:

OpenQA.Selenium.InvalidSelectorException:無效選擇器:xpath 表達式“//div[contains(@class, 'a-content')]//br[1]/preceding-sibling::text()”的結果是: [對象文本]。 它應該是一個元素。

或者,我嘗試使用 JavaScript Executer 來查找此文本 object。 但是當我運行下面的代碼時,它返回 null。

IJavaScriptExecutor javascriptExecutor = (IJavaScriptExecutor)webDriver;
String value = (String)javascriptExecutor.ExecuteScript("document.evaluate(\"//div[contains(@class, 'a-content')]//br[1]/preceding-sibling::text()[1]\") ; ");

對此的任何幫助表示贊賞。

您應該能夠取出“::text()”以獲取 web 元素(然后獲取 Text 屬性):

var x = webDriver.FindElement(By.XPath("//div[contains(@class, 'a-content')]//br[1]/preceding-sibling")).Text;

添加::text() 將返回您選擇的元素的文本。 這是 xapth 的一個特性,不符合 findElement 的 WebElement 期望。

暫無
暫無

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

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