Как нажать, если я столкнулся с ошибкой TimeoutException и NoSuchElementException? - PullRequest
0 голосов
/ 16 ноября 2018

Вот мой код

WebElement goToUser = new WebDriverWait(driver, 20)
        .until(ExpectedConditions.elementToBeClickable
                (By.xpath("//a[@class='mat-listed-item ng-star-inserted' and @href='/users']/div[@class='mat-list-item-content']")));
goToUser.click();

Вот xpath

/html/body/app-root/app-side-nav/mat-sidenav-container/mat-sidenav/app-side-nav-list/mat-nav-list/div[3]/a

и HTML

HTML click here

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вот почему долго с xPath может быть сложно работать. Чтобы лучше понять источник проблемы, вот как я бы разделил код (p.s. Я также изменяю xpath часть для href, чтобы использовать contains):

    WebDriverWait wait = new WebDriverWait(driver, 20);
    WebElement link = driver.findElement(By.xpath("//a[@class='mat-listed-item ng-star-inserted' and contains(@href, 'users')]"));
    WebElement div = link.findElement(By.xpath(".//div[@class='mat-list-item-content']"));
    WebElement goToUser = wait.until(ExpectedConditions.elementToBeClickable(div));
    goToUser.click();

Теперь, если это не поможет, вы увидите точную строку и сможете отладить проблему и исправить ее или задать свой вопрос.

0 голосов
/ 16 ноября 2018

В xpath поместите B ".// app-side-nav-list / mat-nav-list / div [3] / a [@ class = 'mat-перечисленный-элемент ng-star-вставлен']"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...