Невозможно ввести строку в элемент, используя Selenium - PullRequest
0 голосов
/ 02 января 2019

Введение

Я хочу автоматизировать некоторый процесс и узнать что-то новое по пути.Пока что моя задача - войти на сайт.Для этого я использую следующий код.

Код

public static void main(String[] args) throws InterruptedException {
        // TODO code application logic here

        System.setProperty("webdriver.chrome.driver","C:/Users/Jonathan/Desktop/Java/chromedriver/chromedriver.exe");


        WebDriver driver = new ChromeDriver();
        WebElement element = null;

        driver.get("https://somewebsite.com/");
        //Representa un elemento HTML, interactuar con la pagina

        driver.findElement(By.className("dialog_login_opener")).click();

        WebElement userNameInputField = driver.findElement(By.id("mail_or_login_field"));
        WebElement passwordInputField = driver.findElement(By.name("userData[password]"));

        userNameInputField.sendKeys("email@gmail.com");
        passwordInputField.sendKeys("123456");


        element.submit();

        //element.sendKeys("Hola Google!");

        System.out.print(driver.getTitle());

        Thread.sleep(5);

        driver.quit();  

    }

Задача

Пока я смогправильно ввести имя пользователя.Поле, используемое для такой вещи:

<input type="text" name="userData[login]" tabindex="1" id="mail_or_login_field" class="input mail errtip tooltipstered" required="" placeholder="E-mail or Login">

, что объясняет то, что я использовал раньше:

WebElement userNameInputField = driver.findElement(By.id("mail_or_login_field"));

, но когда дело доходит до ввода пароля, оно не делает этого.Вместо этого выдает в меня это исключение, ошибка которого я не могу понять.

Поле пароля:

<input type="password" name="userData[password]" tabindex="2" class="input pass1 errtip tooltipstered" required="" placeholder="Password">

Исключение Журнал ошибок

Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 72.0.3626.7 (efcef9a3ecda02..., userDataDir: C:\Users\Jonathan\AppData\L...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:55872}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 71.0.3578.98, webStorageEnabled: true}
Session ID: 8e80f9dcea262abb66d7888234704503
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285)
    at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:106)
    at seleniumtest.SeleniumTest.main(SeleniumTest.java:46)
C:\Users\Jonathan\AppData\Local\NetBeans\Cache\9.0\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\Jonathan\AppData\Local\NetBeans\Cache\9.0\executor-snippets\run.xml:94: Java returned: 1

1 Ответ

0 голосов
/ 02 января 2019

Просто измените локатор на By.xpath следующим образом:

WebElement passwordInputField = driver.findElement(By.xpath("//input[@type='password'"));
passwordInputField.sendKeys("123456");

Надеюсь, это вам поможет!

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