org.openqa.selenium.WebDriverException: неизвестная ошибка: невозможно фокусировать элемент с ChromeDriver Chrome и Selenium через Java - PullRequest
0 голосов
/ 27 февраля 2019

Я изучаю Selenium, и у меня есть версия Chrome 61.0.3163.100 и версия ChromeDriver 2.34.522940 .Я попробовал этот код:

public void adminLogin(){
        driver.findElement(By.name("userId")).sendKeys("sysadmin");
}

Моя страница загружается, но поле username не заполняется "sysadmin".Это ошибка, которую я получаю:

Starting ChromeDriver 2.34.522940 (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1) on port 31275
  Only local connections are allowed.
  Feb 27, 2019 11:16:44 AM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: OSS
    Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element
      (Session info: chrome=61.0.3163.100)
      (Driver info: chromedriver=2.34.522940 (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 0 milliseconds
    Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
    System info: host: 'DWA7DEVOS00170', ip: '10.96.162.167', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_25'
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    Capabilities {acceptSslCerts: true, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.34.522940 (1a76f96f66e3ca..., userDataDir: C:\Users\rajos1\AppData\Loc...}, cssSelectorsEnabled: true, databaseEnabled: false, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: , unhandledPromptBehavior: , version: 61.0.3163.100, webStorageEnabled: true}
    Session ID: ff3cf91166eddfe1667f931b18ede2ea
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        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:164)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
        at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:279)
        at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:100)
        at pulse.tpr.LoginInterface.adminLogin(LoginInterface.java:24)
        at pulse.tpr.LoginInterface.main(LoginInterface.java:34)

Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Столкнулся с подобной проблемой.Вы используете устаревшую версию chromedriver.Обновите chromedriver до последней версии и установите свойство webdriver соответствующим образом.

WebDriver browser = new ChromeDriver();
String path_to_driver = "C:\\blah\\blah\\chromedriver.exe"
System.setProperty("webdriver.chrome.driver", path_to_driver);

Далее вам потребуется обновить библиотеку селена до последней версии Selenium, поскольку это связано с проблемами обратной несовместимости с Chromedriver.

  • Последняя версия Selenium 3.141.59
  • Последняя версия Chromedriver: 73.0.3683.20

Ссылка для скачивания ChromeDriver: Загрузить драйвер Chrome

Ссылка для скачивания Selenium: Загрузить Selenium

Примечание:

Обязательно подождите некоторое время после перехода к нужному URL-адресу.Причина в том, что элементы заполняются в HTML DOM через определенный промежуток времени.В случае, если веб-драйвер проходит через DOM в течение этого времени, driver.findElement () не сможет получить веб-элемент.

webdriver.get(url);
WebDriverWait wait_time = new WebDriverWait(webdriver, 10);
0 голосов
/ 27 февраля 2019

Это сообщение об ошибке ...

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element
  (Session info: chrome=61.0.3163.100)
  (Driver info: chromedriver=2.34.522940 (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'DWA7DEVOS00170', ip: '10.96.162.167', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_25'
Driver info: org.openqa.selenium.chrome.ChromeDriver

... означает, что ChromeDriver не смог сфокусировать на желаемом элементе .


Ваша главная проблема - несовместимость между используемой вами версией двоичных файлов:

  • Вы используете chromedriver = 2.34
  • Вы используете хром = 61.0
  • Но ваша версия JDK равна 1.8.0_25 который довольно старый и древний .

Таким образом, существует явное несоответствие между JDK v8u25 , ChromeDriver v2.34 и Chrome Browser v61.0


Решение

  • Обновление JDK до последних уровней JDK 8u201 .

Дополнительные замечания

В соответствии с лучшими практиками

  • Обновление ChromeDriver до текущей ChromeDriver v2.46 * 10Уровень 69 *.
  • Обновление Chrome версии до текущих Chrome v71-73 уровней.( в соответствии с примечаниями к выпуску ChromeDriver v2.46 )
  • Очистка вашего Рабочего пространства проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Если ваша базовая версия Web Client устарела, удалите ее и установите последнюю версию GA и выпущенную версию WebКлиент .
  • Выполните перезагрузку системы .
  • Выполните @Test.
  • Всегда вызывайте driver.quit() в методе tearDown(){}закрыть и уничтожить WebDriver и Web Client экземпляров изящно.
0 голосов
/ 27 февраля 2019

Попробуйте использовать класс Actions, чтобы сначала сфокусироваться на элементе, прежде чем использовать sendkeys(), как показано ниже:

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.name("userId")));
actions.click();
actions.sendKeys("sysadmin");
actions.build().perform();
...