[英]Getting WebElement by Text using XPath in Selenium test
我想使用 XPath 查找基於文本的任何 WebElement。
我有興趣找到的 WebElement,
它的 HTML,
基本上,我試圖通過 Text 檢索的 WebElement 包含一個輸入元素。
我目前使用,
driver.findElement(By.xpath("//*[normalize-space(text()) = 'Own Hotel']"));
它沒有找到上面的 WebElement,但它通常可以檢索所有其他 Web 元素。
甚至,
By.xpath("//*[contains(text(),'Own Hotel')]")
沒有給我任何結果。 雖然我對精確的文本匹配感興趣。
我正在尋找一種方法來通過 web 元素中存在的元素的文本無關緊要來查找 web 元素。 如果文本匹配,則應返回 WebElement。
謝謝!
似乎文本被包裹在標簽內而不是輸入。 嘗試這個
driver.findElement(By.xpath(".//label[text()[normalize-space() = 'Own Hotel']]"));
有關於這個XPath模式很好的解釋在這里
在下面的 HTML 中:
<input>
節點中的innerText Own Hotel在開頭和結尾都包含許多空白字符。 由於存在這些前導和尾隨空白字符,您不能將位置路徑text()
用作:
text()
選擇上下文節點的所有文本節點子節點
作為替代方案,您需要使用字符串函數string normalize-space(string?)
,如下所示:
driver.findElement(By.xpath("//*[normalize-space()='Own Hotel']"));
但是,最好讓您的搜索更加細化,添加tagName並最好添加一個 unque 屬性,如下所示:
使用tagName和normalize-space()
:
driver.findElement(By.xpath("//input[normalize-space()='Own Hotel']"));
使用tagName和normalize-space()
:
driver.findElement(By.xpath("//input[@name='ownHotel' and normalize-space()='Own Hotel']"));
您可以在以下位置使用normalize-space()找到一些相關討論:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.