Отображение удаления селенида: false не работает - PullRequest
0 голосов
/ 09 октября 2018

Я хочу нажать переключатель в моих тестах автоматизации.Даже если на странице видны переключатели, невыбранные имеют свойство displayed:false.Selenide почему-то не может щелкнуть, если html-объект имеет свойство displayed:false.Ошибка: Element should be visible {By.id: radio_btn_id}

Вот мой переключатель:

<input class="radio_class" id="radio_btn_id" name="radio_btn_name" type="radio" value="12" displayed:false></input>

То, что я пытался удалить свойство, и ни один из них не работает

SelenideElement element = $(By.id(id));
Selenide.executeJavaScript("document.getElementById('radio_btn_id').removeAttribute('displayed:false')", element);

Selenide.executeJavaScript("document.getElementById('radio_btn_id').removeAttribute(\"displayed:false\")", element);

Selenide.executeJavaScript("jQuery('select:not(:visible)').css('display','block')", element);

Я пытался удалить selected:true свойство, и это сработало.Я не знаю, почему это не работает для displayed:false.У кого-нибудь из вас есть идея?

[РЕДАКТИРОВАТЬ] Принимается ответ Selenium версия.В Selenide это более чисто и просто:

SelenideElement element = $(By.id(id));
Selenide.executeJavaScript("document.getElementById('"+ id+ "').click();", element);

[РЕШЕНИЕ]

Поведение Selenide для флажков и переключателей

1 Ответ

0 голосов
/ 09 октября 2018

Щелкните элемент с помощью JS executor:

public void clickElementWithJS(By locator) {
    String jsClickCode = "arguments[0].scrollIntoView(true); arguments[0].click();";
    try {
        WebElement elementToClick = driver.findElement(locator);
        ((JavascriptExecutor) driver).executeScript(jsClickCode, elementToClick);
    } catch(Exception e) {
        System.out.println("Element could not be clicked.. "  + e.getMessage());
    }
}
...