selenium.NoSuchElementException, даже когда я копирую правильный идентификатор из источника - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь сделать небольшую автоматизацию Gmail. Мой код создает письмо, а затем я пытаюсь выбрать текстовые области (тема, тело, получатели), используя идентификаторы, которые я скопировал из источника HTML. Эти идентификаторы работают, когда я захожу на страницу gmail, но перестают работать, когда я пытаюсь получить доступ к текстовым областям.

System.out.println(driver.getTitle());
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(":3tx")));
    sign = driver.findElement(By.id(":3tx"));
    sign.sendKeys(recipient);

Тогда я получаю эту ошибку:

Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.id: :3tx (tried for 5 second(s) with 500 MILLISECONDS interval)
at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:80)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:232)
at Email.sendEmail(Email.java:42)
at Email.main(Email.java:60)
Caused by: org.openqa.selenium.NoSuchElementException: Cannot locate an element using By.id: :3tx

https://imgur.com/g9Godlr <= Где я вытащил значение идентификатора от </p>

1 Ответ

0 голосов
/ 16 мая 2018

Если элемент видим, ожидание по видимости завершится неудачей. попробуйте это:

System.out.println(driver.getTitle());
    try {wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(":3tx")));} catch (TimeoutException e) {}
    sign = driver.findElement(By.id(":3tx"));
    sign.sendKeys(recipient);
...