2013-03-19 42 views
-2
<br> 
<input id="workedWithGR" type="radio" onclick="showDiv('hiddenInput');" value="yes" checked="" name="workedWithGR" style="border:none;"> 

<label>Yes</label> 

<input id="workedWithGR" type="radio" onclick="hideDiv('hiddenInput');" value="no" name="workedWithGR" style="border:0px;"> 

對於是和否的按鈕我不斷收到「Webdriver找不到元素錯誤」。我無法執行xpath,因爲ID中有引號。Selenium webdriver無法識別這個無線電元素。有人能幫助我嗎?

+0

只是用「\」來避開引號。你能發佈一個html代碼片段嗎? – 2013-03-19 20:38:42

+0

Selenio 2013-03-19 20:39:37

+0

這裏是xpath // * [@ id =「workedWithGR」] – Selenio 2013-03-19 20:40:22

回答

2

使用標籤「value」代替或者子節點「label」然後遞歸地上行選擇正確的元素。比如我假設你的HTML有以下幾點:

<br> 
    <input id="workedWithGR" type="radio" onclick="showDiv('hiddenInput');" value="yes" checked="" name="workedWithGR" style="border:none;"> 
    <label>Yes</label> 
    <input id="workedWithGR" type="radio" onclick="hideDiv('hiddenInput');" value="no" name="workedWithGR" style="border:0px;"> 
    <label>No</label> 

所以你可以試試下面的鍵控關閉節點標籤:

//input[@id=\"workedWithGR\"]/label[text()="Yes"]/../input 
+0

+1的答案,似乎是一個合理的解決方案,只是另一個可能的XPath(不打算再放一個答案,因爲這個工作正常)可能是:'// label [text()=「是「]/ancestor :: input [@ id =」workedWithGR「]'...兩者都會得到相同的結果。 – Arran 2013-03-20 09:42:08

0

我用這種方法進行無線電輸入。避免使用具有相同名稱的可變數量的單選按鈕來查找多個輸入元素/作品。

String valueToSelect = "no"; 
List<WebElement> radios = driver.findElement(By.name("workedWithGR")); 
if (radios.size() == null) 
    return ; 

for (WebElement radio : radios){ 
    if (radio.getAttribute("value").equals(valueToSelect)){ 
     radio.click(); 
     break; 
    } 
} 
相關問題