簡體   English   中英

Xpath不適用於Selenium

[英]Xpath does not work with Selenium

我正在嘗試為舊系統構建測試。 HTML格式不正確。 我需要識別並單擊一個單選按鈕。

html看起來像這樣:

...
<td class="tablerow" colspan="3">
   <INPUT type=radio name="ticket" value="22" >ramdom1
   <INPUT type=radio name="ticket" value="1" >ramdom2
   <INPUT type=radio name="ticket" value="3" >ramdom3
   <INPUT type=radio name="ticket" value="99" >ramdom4
</td>
...

我試圖使用xpath選擇輸入,如下所示:

String xpath = "//input[contains(@name, 'ticket') and contains(@value, '3')]";
WebElement rb = driver.findElement(By.xpath(xpath));

但是硒沒有找到這種元素。

如果改為

String xpath = "//input[contains(@name, 'ticket')]";
List<WebElement> rbs = driver.findElements(By.xpath(xpath));

要么

String xpath = "//input[contains(@value, '3')]";
List<WebElement> rbs = driver.findElements(By.xpath(xpath));

它有效,selenium返回一個元素列表,包括我需要的元素。 只有當我嘗試在同一個xpath中使用這兩個條件時才會出現此問題。

當然,我可以迭代列表並測試每個值,但我想了解我是否做錯了。 由於IE沒有本機xpath支持,我認為這可能是一個selenium實現問題。

我正在使用Selenium WebDriver(2.37.1)和IE Driver。

不確定這是否是Selenium實現問題,但這應該有效:

"//input[contains(@name, 'ticket')][contains(@value, '3')]"

使用and基本相同所以結果在這里應該是正確的。

我不確定為什么這不起作用,這在技術上不是一個答案,但你可以准確地復制Selenium所做的事情,以確保它不是Selenium或其任何工具的錯誤。

Selenium使用一個名為“Wicked Good XPath”的庫來實現基於Javascript的XPath引擎實現,因為IE沒有“本機”實現。

因此,要重現場景,請復制頁面並將Wicked Good XPath添加到腳本標題中。 該網站首頁上的文檔非常簡單,非常容易理解。

在IE中加載后,打開開發人員工具並進入控制台。 Wicked Good XPath需要“初始化”,因此你需要在控制台中調用wgxpath.install()

完成后,您現在可以訪問Selenium將使用的相同庫。 現在,您可以在IE的開發人員控制台中調用一個函數來使用XPath訪問DOM:

document.evaluate("//input[contains(@name, 'ticket') and contains(@value, '3')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue

你需要的確切元素將被退回,至少對我而言。

現在,誠然,你根本不需要XPath,你可以使用CSS選擇器:

input[name~='ticket'][value='3']

我們可以使用以下css

1.CSS =輸入[值= '22' ]

2.css =輸入[值= '1']

3.css =輸入[值= '3']

4.css =輸入[值= '99' ]

檢查單選按鈕。

暫無
暫無

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

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