2013-12-17 45 views
7

我正在尝试编写Selenium测试来选择一个单选按钮。以下是来自'查看源代码'的html。使用Selenium Webdriver选择PrimeFaces单选按钮

<table id="surveyForm:surveyUrlType" class="ui-selectoneradio ui-widget" style="width:100%;margin-top:10px;margin-bottom: 10px;"> 
    <tbody> 
    <tr> 
     <td> 
      <div class="ui-radiobutton ui-widget"> 
       <div class="ui-helper-hidden-accessible"> 
        <input id="surveyForm:surveyUrlType:0" name="surveyForm:surveyUrlType" type="radio" value="TYPED" checked="checked" onchange="com.ssi.feasibility.surveyView.showSurveyType(this);"> 
       </div> 
       <div class="ui-radiobutton-box ui-widget ui-corner-all ui-state-default ui-state-active"> 
        <span class="ui-radiobutton-icon ui-icon ui-icon-bullet"></span> 
       </div> 
      </div> 
     </td> 
     <td><label for="surveyForm:surveyUrlType:0">Enter Survey URL</label></td> 
     <td> 
      <div class="ui-radiobutton ui-widget"> 
       <div class="ui-helper-hidden-accessible"> 
        <input id="surveyForm:surveyUrlType:1" name="surveyForm:surveyUrlType" type="radio" value="FILE" onchange="com.ssi.feasibility.surveyView.showSurveyType(this);"> 
       </div> 
       <div class="ui-radiobutton-box ui-widget ui-corner-all ui-state-default"> 
        <span class="ui-radiobutton-icon"></span> 
       </div> 
      </div> 
     </td> 
     <td><label for="surveyForm:surveyUrlType:1">Upload Survey URLs</label></td> 
    </tr> 
    </tbody> 
</table> 

我想选择“上传调查网址”单选按钮。

我已经尝试了几种不同的方法来选择单选按钮。以下是几个:

 $("#surveyForm\\surveyUrlType").click(); 

     This gives me the error : 
     $("#surveyForm\\:surveyUrlType\\:1").first().click() 

错误 - 元素在点(809,367)处不可点击。其他元素将收到点击:...

下面给我NoSuchElementFound:

 driver.findElement(By.id("surveyForm:surveyUrlType:1")).click() 
     driver.findElement(By.xpath("//input[@type='radio' and @id='surveyForm\\:surveyUrlType\\:1']")).click() 
     driver.findElement(By.xpath("//input[@value='FILE']")).click() 
     driver.findElement(By.cssSelector("#surveyForm\\:surveyUrlType\\:1")).click() 

下面不给我任何错误,但他们也没有选择的单选按钮。

 $(".ui-radiobutton-box ui-widget ui-corner-all ui-state-default")[1].click() 
     $(".ui-radiobutton-box ui-widget ui-corner-all ui-state-default").click() 
     $("#surveyForm\\:surveyUrlType").find(".ui-radiobutton-box ui-widget ui-corner-all ui-state-default").find("span").click() 

但是这些都没有工作。我错过了什么?

+0

它在Primefaces对话框中。我可以访问页面上的其他输入框并操作它们的值。但只是这个单选按钮。第一个是预选的。我想选择第二个。不,我没有尝试过WebDriverWait。 – user1860447

回答

6

这就是我最终得到它的方式!

driver.findElement(By.cssSelector("label[for='surveyForm\\:surveyUrlType\\:1']")).click() 
+0

该代码看起来像你的'label',而不是点击'input',这是否真的有用吗? –

+0

@vincebowden是的'label'有一个onclick侦听器。我不知道为什么其他选项失败了,但点击标签为我工作与Selenium 2.47.1和Prime 5.2 – peater

0

尝试

WebElement element = new WebDriverWait(Driver,30).until(ExpectedConditions.elementToBeClickable(By.id("surveyForm:surveyUrlType:1"))); 
element.click(); 
+0

感谢您的回复。我试过了,我得到这个错误:org.openqa.selenium.WebDriverException:未知的错误:元素不可点击点(454,255)。其他元素将收到点击:

...
(会话信息:铬= 31.0.1650.63) (驾驶员信息:chromedriver = 2.1,平台=的Mac OS X 10.8.5 x86_64的)(警告:服务器未提供任何信息栈跟踪) – user1860447

0

我在Java中下面的代码

lst=driver.findElements(by_name("surveyForm:surveyUrlType")) 
    for(condition) 
     option.click() 

在Python中我解决了这个方式解决上述课题:

lst=driver.find_elements_by_name("surveyForm:surveyUrlType") 
for i in lst: 
    if(i.text=="Enter Survey") 
     i.click() 
    elif(i.text=="Upload Survey URLs") 
     i.click() 

如果上面的一个都没有帮我试试这个

driver.findElement(by_class_name("ui-radiobutton-icon ui-icon ui-icon-bullet")).click() 
driver.findElement(by_class_name("ui-radiobutton-icon")).click() 
+0

感谢您的回复。我尝试了所有的建议,但都没有奏效。 :( – user1860447

相关问题