2013-12-17 12 views
7

Sto tentando di scrivere test selenio per selezionare un pulsante di opzione. Di seguito è riportato l'html di 'view Source'.Selezionare un pulsante di opzione PrimeFaces con Selenium Webdriver

<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> 

Desidero selezionare il pulsante di opzione "Carica sondaggi URL".

Ho provato diversi approcci diversi per selezionare il pulsante di opzione. Eccone alcuni:

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

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

Errore: l'elemento non è selezionabile al punto (809, 367). Altro elemento avrebbe ricevuto il clic: ...

Sotto di me danno 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() 

Sotto Non mi danno alcun errore, ma anche non selezionare il pulsante di opzione.

 $(".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() 

Ma nessuno di questi funziona. Cosa mi manca?

+0

Si trova nella finestra di dialogo Primefaces. Posso accedere ad altre caselle di input sulla pagina e manipolare i loro valori. Ma solo questo pulsante radio. Il primo è preselezionato. Voglio selezionare il secondo. No, non ho provato WebDriverWait. – user1860447

risposta

6

Questo è il modo in cui ho finalmente funzionato !!

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

Quel codice sembra che tu stia facendo clic su 'label' e non su' input'. Funziona davvero? –

+0

@vincebowden Sì, l'etichetta 'ha un ascoltatore onclick. Non sono sicuro del motivo per cui le altre opzioni fallito, ma fare clic sull'etichetta funziona per me con Selenium 2.47.1 e Prime 5.2 – peater

0

Prova

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

Grazie per la risposta. Ho provato e ottengo questo errore: org.openqa.selenium.WebDriverException: errore sconosciuto: Elemento non è selezionabile al punto (454, 255). Altro elemento riceverebbe il clic:

...
(Informazioni sulla sessione: chrome = 31.0.1650.63) (Informazioni sul driver: chromedriver = 2.1, piattaforma = Mac OS X 10.8.5 x86_64) (ATTENZIONE: il server non ha fornito alcuna informazione di stacktrace) – user1860447

0

ho il seguente codice in Java

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

in python ho risolto il problema di cui sopra in questo modo:

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() 

Se quanto sopra non ha ha aiutato a provare questo

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

Grazie per la risposta. Ho provato tutti i suggerimenti e non hanno funzionato. :( – user1860447

Problemi correlati