如何使用 Selenium 单击单选按钮
How to click on a radio button using Selenium
我试图点击 selenium 中的单选按钮 java 但它没有点击。
这是检查单选按钮:
<input name="timeSyncType" class="radio" id="radioNTP" type="radio" ng-click="oSettingTimeInfo.szTimeMode='NTP'" ng-checked="oSettingTimeInfo.szTimeMode=='NTP'">
我试过了
WebElement radio = driver.FindElement(By.id("radioNTP"));
radio.click();
我也试过这个
WebElement rbutton = driver.findElement(By.xpath("//input[@id='radioNTP']"));
rbutton.click();
但运气不好,有什么帮助吗?
要单击该元素,您可以使用以下任一方法 :
cssSelector:
driver.findElement(By.cssSelector("input#radioNTP[name='timeSyncType'][ng-click^='oSettingTimeInfo']")).click();
xpath:
driver.findElement(By.xpath("//input[@id='radioNTP' and @name='timeSyncType'][starts-with(@ng-click, 'oSettingTimeInfo')]")).click();
但是,由于元素是 Angular element so ideally to on the element you need to induce for the and you can use either of the following :
cssSelector:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#radioNTP[name='timeSyncType'][ng-click^='oSettingTimeInfo']"))).click();
xpath:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='radioNTP' and @name='timeSyncType'][starts-with(@ng-click, 'oSettingTimeInfo')]"))).click();
首先,您必须确保此 ID radioNTP
在 HTMLDOM 中是否唯一。
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 //input[@id='radioNTP']
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
如果是,那么在Selenium中执行点击的方法有很多。
代码试用 1:
Thread.sleep(5);
driver.findElement(By.xpath("//input[@id='radioNTP']")).click();
代码试用2:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='radioNTP']"))).click();
代码试用3:
Thread.sleep(5);
WebElement button = driver.findElement(By.xpath("//input[@id='radioNTP']"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", button);
代码试用4:
Thread.sleep(5);
WebElement button = driver.findElement(By.xpath("//input[@id='radioNTP']"));
new Actions(driver).moveToElement(button).click().build().perform();
如果否,则必须更改定位器并使用代表所需节点的定位器。
PS: Thread.sleep(5);
就是为了解决这个问题,如果上面的任何代码都有效,请将web元素替换为WebDriverWait
。
我试图点击 selenium 中的单选按钮 java 但它没有点击。
这是检查单选按钮:
<input name="timeSyncType" class="radio" id="radioNTP" type="radio" ng-click="oSettingTimeInfo.szTimeMode='NTP'" ng-checked="oSettingTimeInfo.szTimeMode=='NTP'">
我试过了
WebElement radio = driver.FindElement(By.id("radioNTP"));
radio.click();
我也试过这个
WebElement rbutton = driver.findElement(By.xpath("//input[@id='radioNTP']"));
rbutton.click();
但运气不好,有什么帮助吗?
要单击该元素,您可以使用以下任一方法
cssSelector:
driver.findElement(By.cssSelector("input#radioNTP[name='timeSyncType'][ng-click^='oSettingTimeInfo']")).click();
xpath:
driver.findElement(By.xpath("//input[@id='radioNTP' and @name='timeSyncType'][starts-with(@ng-click, 'oSettingTimeInfo')]")).click();
但是,由于元素是 Angular element so ideally to
cssSelector:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#radioNTP[name='timeSyncType'][ng-click^='oSettingTimeInfo']"))).click();
xpath:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='radioNTP' and @name='timeSyncType'][starts-with(@ng-click, 'oSettingTimeInfo')]"))).click();
首先,您必须确保此 ID radioNTP
在 HTMLDOM 中是否唯一。
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 //input[@id='radioNTP']
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
如果是,那么在Selenium中执行点击的方法有很多。
代码试用 1:
Thread.sleep(5);
driver.findElement(By.xpath("//input[@id='radioNTP']")).click();
代码试用2:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='radioNTP']"))).click();
代码试用3:
Thread.sleep(5);
WebElement button = driver.findElement(By.xpath("//input[@id='radioNTP']"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", button);
代码试用4:
Thread.sleep(5);
WebElement button = driver.findElement(By.xpath("//input[@id='radioNTP']"));
new Actions(driver).moveToElement(button).click().build().perform();
如果否,则必须更改定位器并使用代表所需节点的定位器。
PS: Thread.sleep(5);
就是为了解决这个问题,如果上面的任何代码都有效,请将web元素替换为WebDriverWait
。