簡體   English   中英

我無法使用XPATH找到與子元素完全匹配的對象

[英]I am not able to find an exact match for child elements using XPATH

我的要求是將一個字符串發送到webdriver中,並將該字符串與單選按鈕的標簽匹配。

<input type="radio" onclick="Element.show('indicator_radio_term_190');render_selected_term('190','1','275467','AQCB Number')" value="190" name="radio_190"/>
<input type="radio" onclick="Element.show('indicator_radio_term_179');render_selected_term('179','1','275467','AQCB Number (iLink)')" value="179" name="radio_179"/>

上面是兩個名為“ AQCB Number ”和“ AQCB Number (iLink) ”的單選按鈕的結構。 因此,當我將字符串“ AQCB號”移交給我時,我想找到帶有完全相同的文本的單選按鈕。

當我使用//input[contains(@onclick,'AQCB Number')]來獲取帶有標簽的xpath時,我都得到了拋出異常的兩個結果。 有沒有一種方法可以找到完全匹配並仍然使用包含? AQCB Number ”和“ AQCB Number (iLink) ”是單選按鈕的標簽。

也包括單引號:

driver.findElement(By.xpath("//input[contains(@onclick, \"'AQCB Number'\")]"));

要么

driver.findElement(By.xpath("//input[contains(@onclick, '\'AQCB Number\'')]"));

關於您的問題不是專門關於如何區分您的AQCB條目的問題,而是有關您如何匹配所需的確切孩子的問題

我建議使用value或name屬性以更易讀的方式獲取匹配項:

首先按名稱

driver.findElement(By.name("radio_190"));

按值

driver.findElement(By.xpath("//input[@value = '190']"));

更新

在OP澄清之后,他的實際要求是什么,那么@peetya的解決方案當然是正確的:

您只需要使用在onclick事件的js代碼中找到的引號即可:

driver.findElement(By.xpath("//input[contains(@onclick, '\'AQCB Number\'')]"));

更進一步,如果您要傳遞字符串“ radioButtonName”,則應執行以下操作:

String searchString = "'" + radioButtonName + "'";

driver.findElement(By.xpath("//input[contains(@onclick, '" + searchString + "')]"));

暫無
暫無

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

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