Тестирование Selenium — флажок «элемент не взаимодействует»

#java #selenium #testing

#java #селен #тестирование

Вопрос:

Пытаюсь выбрать элемент для тестирования. У нас есть его идентификатор, поэтому:

    @FindBy(how = How.ID, using = "tree-node-home")
    WebElement CheckBoxMenuItem;
 

Выдает ошибку: "element not interactable".

То же самое с XPath или выбором с помощью css [type='checkbox']

Пытался отложить загрузку:

 WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(By.id("tree-node-home")));
 

Но на этот раз я получил
"java: <identifier> expected"
при этом курсор мигает перед (ExpectedConditions".

Что за F.?

Комментарии:

1. Истекает ли время ожидания, когда вы используете a FluentWait вместо a WebDriverWait ? Вы можете инициализировать его withTimeOut(Duration) во время pollingEvery(Duration) и поставить, скажем, 30 секунд на тайм-аут?

2. Можете ли вы опубликовать URL-адрес, если он общедоступный?

3. Конечно, это demoqa.com/checkbox

Ответ №1:

Вы должны нажать на метку parrent вместо флажка.

Код:

 package selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class DemoQACheckBoxTest extends WebDriverSetup {

    public static void main(String[] args) {

        WebDriver driver = startChromeDriver(); // wrapped driver init
        driver.get("https://demoqa.com/checkbox");
        WebElement checkBox = driver.findElement(By.id("tree-node-home"));
        WebElement checkBoxLabel = driver.findElement(By.xpath("//label[contains(@for,'tree-node-home')]"));
        System.out.println("checkbox text: "   checkBox.getText());
        System.out.println("label text: "   checkBoxLabel.getText());
        System.out.println("checkbox is displayed: "   checkBox.isDisplayed());
        System.out.println("checkbox is enabled: "   checkBox.isEnabled());
        System.out.println("checkbox is selected: "   checkBox.isSelected());
        checkBoxLabel.click();
        System.out.println("checkbox is selected: "   checkBox.isSelected());
        driver.quit();
    }

}
 

Выходной сигнал:

 Starting ChromeDriver 96.0.4664.45 (76e4c1bb2ab4671b8beba3444e61c0f17584b2fc-refs/branch-heads/4664@{#947}) on port 16990
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Pro 10, 2021 2:23:39 ODP. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
checkbox text: 
label text: Home
checkbox is displayed: false
checkbox is enabled: true
checkbox is selected: false
checkbox is selected: true
 

Комментарии:

1. Да, точно! Спасибо!