Использовать WebDriverWait:
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement senior = wait.until(ExpectedConditions.elementToBeClickable(By.id("radio2")));
senior.click();
После просмотра веб-сайта выглядит, что input
это не тот элемент, который вы хотите щелкнуть, а label
...
Так что простоизмените senior
var на:
WebElement senior = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='RadioButton']//label[@for='radio2']")));
. Лучший способ автоматизировать действия человека в случае, когда элемент не реагирует на росу по отношению к другим элементам, покрывающим их, - это использовать Actions
:
WebElement senior = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='RadioButton']//label[@for='radio2']")));
Actions actions = new Actions(driver);
actions.moveToElement(senior).click().build().perform();
(использование JavascriptExecutor
и executeScript
не действительно щелчок ... он просто вызывает метод, который может быть хорошим, но не для тестирования ...)
В крайнем случае используйте JavascriptExecutor
:
JavascriptExecutor jse= (JavascriptExecutor) driver;
jse.executeScript("arguments[0].click();", senior);