2016-07-28 16 views
4

Ich möchte auf den zweiten Radio-Button mit Java/Selenium klicken. Ids sind dynamisch und ich weiß nicht, warum Xpath nicht funktioniert. Es wäre wirklich hilfreich, wenn ihr mir zeigen könnt, wie das geht.Klicken Sie auf das zweite Optionsfeld mit Java Selen

HTML

<div class="form-radiobutton-group group-horizontal" id="id29"> 
      <div class="form-radiobutton-element"> 
       <span class="form-radiobutton-wrapper"> 
        <input class="salutation_f feedback-panel-trigger wicket-id29" id="id4" name="personaldataPanel:salutation:choices" value="radio9" type="radio"> 
        <label for="id4" class=""></label> 
       </span> 
       <label for="id4"> 
        Frau 
       </label> 
      </div> 
      <div class="form-radiobutton-element"> 
       <span class="form-radiobutton-wrapper"> 
        <input class="salutation_m feedback-panel-trigger wicket-id29" id="id3" name="personaldataPanel:salutation:choices" value="radio11" type="radio"> 
        <label for="id3" class=""></label> 
       </span> 
       <label for="id3"> 
        Herr 
       </label> 
      </div> 
     </div> 

-Code jetzt

WebElement m = driver.findElement(By.xpath("//div[2]/span/input")); 
m.click(); 

Antwort

2

können Sie lokalisieren radio buttonBy.xpath mit ihrem Label Text wie unten: -: mit der Bezeichnung Text

driver.findElement(By.xpath("//input[../following-sibling::label[contains(.,'Frau')]]")).click(); 
  • Um klicken Radiobutton Herr

    • Optionsfeld mit der Bezeichnung Text Frau klicken :

      driver.findElement(By.xpath("//input[../following-sibling::label[contains(.,'Herr')]]")).click(); 
      

    Herausgegeben: - Wenn Sie Ausnahme erhalten, dass Klick durch ein anderes Element erhalten würde, müssen WebDriverWait implementieren, bis Element sichtbar auf DOM wie unten warten: -

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[../following-sibling::label[contains(.,'Herr')]]"))); 
    el.click(); 
    

    Wenn Sie nach wie vor demselben Problem dann versuchen, wie unten mit JavascriptExecutor klicken: -

    ((JavascriptExecutor)driver).executeScript("arguments[0].click()", el); 
    
  • +0

    Vielen Dank für Antwort, aber ich erhalte diese Störung verursacht durch: org.openqa.selenium.WebDrive rException: Element kann nicht an Punkt geklickt werden (358.5, 262). Anderes Element würde den Klick erhalten: Toffa

    +0

    @Toffa Ich denke, Sie müssen 'WebDriverWait' implementieren, um zu warten, bis Element auf dem Dom vorhanden ist. :) –

    +0

    @Toffa versuchen mit aktualisiert Antwort, hoffe es hilft .. :) –

    2

    das Optionsfeld mit der Bezeichnung "Frau" klicken:

    WebElement m = driver.findElement(By.xpath(
        "//input[@id=//label[normalize-space(.)='Frau']/@for]")); 
    
    m.click(); 
    

    Oder:

    WebElement m = driver.findElement(By.xpath(
        "id(//label[normalize-space(.)='Frau']/@for)")); 
    
    m.click(); 
    
    0
    element=//input[@id=//label[normalize-space(.)='Frau']/@for] 
    
    public void javascriptclick(String element) 
        { 
         WebElement webElement=driver.findElement(By.xpath(element)); 
         JavascriptExecutor js = (JavascriptExecutor) driver; 
    
         js.executeScript("arguments[0].click();",webElement); 
         System.out.println("javascriptclick"+" "+ element); 
         } 
    
    Verwandte Themen