如何使用 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