элемент не взаимодействует для поля пароля Gmail Selenium WebDriver с использованием Java - PullRequest
2 голосов
/ 03 октября 2019

В настоящее время я пытаюсь войти в свой тестовый ящик Gmail. Логин в порядке, но для поля пароля я всегда получаю:

ElementNotInteractableException: элемент не взаимодействует.

Я использовал разные xpath's / id's (онидовольно явно) но это не помогло. Код прост:

public class OpenGmail {
    public static void main(String[] args){
        System.setProperty ("webdriver.chrome.driver", "C:\\Chromedriver\\chromedriver_win32\\chromedriver.exe");
        WebDriver wd = new ChromeDriver();
        try {
            wd.get("https://mail.google.com/mail/u/0/h/1pq68r75kzvdr/?v%3Dlui");
            wd.findElement(By.xpath("//input[@type='email']")).sendKeys("test@gmail.com");
            wd.findElement(By.id("identifierNext")).click();
//Variant1
            wd.findElement(By.xpath("//input[@type='password']")).sendKeys("qwerty123");
//Variant2
           wd.findElement(By.id("password")).sendKeys("qwerty123");


            System.out.println("clicked");
            wd.findElement(By.xpath("//input[@class='whsOnd zHQkBf']")).sendKeys("qwerty123");
        }catch (Exception e){
            System.out.println(e);
        }
    }
}

Я пытался проанализировать HTML, и в WebElement есть aria-hidden="true":

<input type="password" class="whsOnd zHQkBf" jsname="YPqjbf" autocomplete="current-password" spellcheck="false" tabindex="0" aria-label="Enter your password" name="password" autocapitalize="off" dir="ltr" data-initial-dir="ltr" data-initial-value="">
<div jsname="YRMmle" class="AxOyFc snByac" aria-hidden="true">Enter your password</div>

Правильно ли я понимаю, что WebElementWebDriver?

считается скрытым. Можно ли, например, отправлять данные в это поле с помощью JS? Я хотел попробовать установить значение setAttribute JavaScriptexecutor setAttribute для селена , но раньше никогда не использовал JS.

1 Ответ

1 голос
/ 03 октября 2019

Для ввода пароля, который вы имеете в виду на страницах входа в gmail, вы можете использовать этот локатор: By.name("password") и, похоже, вам нужно подождать этот элемент. Во-первых, следующий импорт:

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

И попробуйте следующий код:

wd.get("https://mail.google.com/mail/u/0/h/1pq68r75kzvdr/?v%3Dlui");

//wait email input
WebElement email = new WebDriverWait(wd, 10).until(ExpectedConditions.elementToBeClickable(By.name("identifier")));
email.sendKeys("test@gmail.com");
wd.findElement(By.id("identifierNext")).click();

//wait password input
WebElement password = new WebDriverWait(wd, 10).until(ExpectedConditions.elementToBeClickable(By.name("password")));
password.sendKeys("qwerty123");
System.out.println("clicked");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...