今天我問this問題,但錯誤地,我沒有指定它的範圍,這是用於Selenium Webdriver。硒WebDriver - Xpath選擇跨度和排除子節點
所以我有這個TD:
<td>
<span id="PartComment">
REMAN WATER PUMP
<i>w/2.05" DIAMETER THERMOSTAT OUTLET - SUPPLIED w/PULLEY
</i>
</span>
</td>
而且我想一個XPath找到只有文本再製造水泵後,它轉換爲字符串。
driver.findElement(By.xpath("//span[@id='lblPartComment']/text()"));
但問題是,因爲我只定位文本,而不是一個DOM對象,webdriver的將不能夠把它當作這樣的:
Exception in thread "main" org.openqa.selenium.InvalidSelectorException: The given selector //span[@id='lblPartComment']/text() is either invalid or does not result in a WebElement. The following error occurred: InvalidSelectorError: The result of the xpath expression "//span[@id='lblPartComment']/text()" is: [object Text]. It should be an element.
能否請您提供該xpath的替代方案?一個定位我上面提到的文字,並排除i
內的文字?
另外,related。
感謝
我可以提供給你定位器,但你能告訴我:文本「REMAN WATER PUMP」正在改變嗎?我的意思是,你是否想要針對不同的測試案例進行驗證?由於XPath語法僅用於通過此部分文本查找範圍。 –
我想定位跨度並在跨度內提取文本,並排除可能出現的i或任何其他子節點中的任何文本。是的,重新水泵文本可能會改變,但這是不相關的,因爲我正在定位跨度。另外,閱讀我發現// span [@ id ='PartComment']/[not(self :: i)]可以工作,但是這會不斷地將文本添加到其他子節點中,所以它不起作用爲了我。 所以基本上我需要的是一種方法,我可以在xpath中使用not函數來排除i節點(至少現在是這樣) – zuri