我想用Java / Selenium敲第二个单选按钮。id是动态的,我不知道为什么xpath不起作用。如果你们能告诉我这是如何工作的,那将真的很有帮助。
的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>
立即编码
WebElement m = driver.findElement(By.xpath("//div[2]/span/input"));
m.click();
您可以radio button
使用By.xpath
以下标签文字来查找它们:-
要单击带有标签文本的单选按钮Frau
:
driver.findElement(By.xpath("//input[../following-sibling::label[contains(.,'Frau')]]")).click();
要单击带有标签文本的单选按钮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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句