Click the second switch with java selenium

I want to click on the second switch with java / selenium. Identifiers are dynamic, and I don't know why xpath is not working. It would be very helpful if you guys can show me how this works.

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

WebElement m = driver.findElement(By.xpath("//div[2]/span/input"));
m.click();
+4
source share
3 answers

You can find radio buttonwith the help of By.xpaththe text your tags, as shown below: -

  • To click the switch with label text Frau:

    driver.findElement(By.xpath("//input[../following-sibling::label[contains(.,'Frau')]]")).click();
    
  • To click the switch with label text Herr:

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

: - , , WebDriverWait, , DOM, : -

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

, JavascriptExecutor, : -

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

"Frau":

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

m.click();

:

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

m.click();
+2
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);
        }
0
source

Source: https://habr.com/ru/post/1649429/


All Articles