У меня есть метод:
public void clickCheckBox(int index) {
List<WebElement> sizeList = getSizeList();
WebElement checkbox = sizeList.get(index);
Actions action = new Actions(driver);
action.moveToElement(checkbox).click().build().perform();
}
Этот метод принимает индекс списка флажков, а затем использует класс Actions, чтобы установить флажок. Я делаю это так, потому что страница, с которой я в настоящее время работаю, запускает событие, когда этот флажок установлен, поэтому просто установите флажок и нажмите "Не работает" (событие не срабатывает).
Мой выше код не проверяет флажок, и я не уверен, почему. Любое понимание было бы здорово. Пожалуйста, дайте мне знать, если я не предоставил достаточную информацию.
РЕДАКТИРОВАТЬ:
Вот мой метод получения размера списка:
public List<WebElement> getSizeList(){
List<WebElement> sizeList = body.findElement(By.cssSelector("ul")).findElements(By.cssSelector("li"));
if(null==sizeList) {
// oops, couldn't find the element
LOGGER.error("Failed to locate the 'li' element for the action button");
return Collections.emptyList();
}
return sizeList;
}
Вот немного HTML:
<ul>
<li>
<input type="checkbox">
<a href="www.url.com" title="8">8</a>
<span class="count">(1,037)</span>
</li>
<li>
<input type="checkbox">
<a href="www.url.com" title="10">10</a>
<span class="count">(1,047)</span>
</li> ...
Нахождение элемента до li, но не ввода (флажок)
//get the checkboxes size with below command
List<WebElement> sizeList = body.findElements(By.cssSelector("ul>li>input"));
or
List<WebElement> sizeList = body.findElements(By.cssSelector("input[type='checkbox']"));
Теперь выполняйте операции с указанным выше списком.
for(WebElement eachChkBox : sizeList) {
new Actions(driver).click(eachChkBox).perform();
}