2013-12-17 15 views
7

Próbuję pisać testy Selenium, aby wybrać przycisk opcji. Poniżej znajduje się html z "widoku źródła".Wybierz przycisk opcji PrimeFaces za pomocą 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> 

Chcę wybrać opcję "Prześlij adresy URL ankiet".

Próbowałem kilka różnych podejść, aby wybrać przycisk opcji. Oto kilka:

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

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

Błąd- Element nie może zostać kliknięty w punkcie (809, 367). Drugim elementem otrzyma kliknięcie ...

Poniżej dać mi 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() 

Poniżej nie daje mi żadnego błędu, ale też nie wybrać opcję.

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

Ale żadna z nich nie działa. czego mi brakuje?

+0

Znajduje się w oknie dialogowym Główne. Mogę uzyskać dostęp do innych pól wprowadzania na stronie i manipulować ich wartościami. Ale tylko ten przycisk opcji. Pierwszy z nich jest wstępnie wybrany. Chcę wybrać drugi. Nie, nie próbowałem WebDriverWait. – user1860447

Odpowiedz

6

W ten sposób udało mi się to w końcu zrealizować !!

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

Ten kod wygląda tak, jakbyś kliknął na 'etykiecie', a nie na' wejściu' .To naprawdę działa? –

+0

@vincebowden Tak, 'etykieta' ma słuchacza onclick .Nie wiem, dlaczego inne opcje nie udało się, ale kliknięcie etykiety działa dla mnie z Selenium 2.47.1 i Prime 5.2 – peater

0

Spróbuj

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

Dzięki za odpowiedź. Próbowałem go i otrzymuję ten błąd: org.openqa.selenium.WebDriverException: unknown error: Element nie jest klikalny w punkcie (454, 255). Inny element otrzyma kliknięcie:

...
(Informacje o sesji: chrome = 31.0.1650.63) (Informacje o sterowniku: chromedriver = 2.1, platforma = Mac OS X 10.8.5 x86_64) (OSTRZEŻENIE: Serwer nie podał żadnych informacji o stosie) – user1860447

0

Mam następujący kod w Javie

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

W python I rozwiązać powyższy problem w ten sposób:

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

Jeśli powyższe nie mają pomógł wypróbować ten jeden

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

Dzięki za odpowiedź. Wypróbowałem wszystkie sugestie i nie zadziałały. :( – user1860447

Powiązane problemy