Нажать на элемент страницы с помощью Selenium, Page Object и Java

Сайт https://id.yandex.ru/.

Собственно, на странице есть кружок на него кликаю, появляется меню, в котором есть часть меню "Выйти". На неё клик и выходим из аккаунта.

Та веб-часть на которую я хочу нажать:

 <div class="MenuItem-Content"><span class="Text">Выйти</span> </div>

Мои попытки В Java-коде:


@FindBy(xpath = "//*[@id=\"root\"]/div/div/div/div/div[6]/a[2]/div[2]/span")
    private WebElement element1;

 public void userLogout() {
        WebDriverWait wait = new WebDriverWait(driver, 5);
        WebElement element1 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"root\"]/div/div/div/div/div[6]/a[2]/div[2]/span")));
        element1.click();
    }

Ошибка - at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:221) - первая верхняя красная строка из всех красных строк.

Помогите пожалуйста.


Ответы (1 шт):

Автор решения: Lenny

Ответ

Такое меню называется раскрывающееся меню

Цитата того, кто знал решение:

Потому что весь контент на странице подгружается JS`ом во фрейм, в него нужно переключиться, что бы работать с данными, которые в нём есть:

Решение в моем случае (сниппет):

private WebElement dropMenu;

    public void userLogout() {
        driver.switchTo().frame(driver.findElement(By.xpath("//*[@id=\"__next\"]/div/header/div/div[2]/div/div/iframe")));
        dropMenu = new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='Выйти']")));
        dropMenu.click();
    }

Всем добра!

→ Ссылка