org.openqa.selenium.WebDriverException:未知错误:无法通过Java使用ChromeDriver Chrome和selenium聚焦元素
我正在学习Selenium,我有Chrome版本61.0.3163.100和ChromeDriver版本2.34.522940。我尝试了以下代码:org.openqa.selenium.WebDriverException:未知错误:无法通过Java使用ChromeDriver Chrome和selenium聚焦元素,java,selenium,google-chrome,webdriver,selenium-chromedriver,Java,Selenium,Google Chrome,Webdriver,Selenium Chromedriver,我正在学习Selenium,我有Chrome版本61.0.3163.100和ChromeDriver版本2.34.522940。我尝试了以下代码: public void adminLogin(){ driver.findElement(By.name("userId")).sendKeys("sysadmin"); } 我的页面正在加载,但用户名字段没有填充“sysadmin”。这就是我得到的错误: Starting ChromeDriver 2.34.522940 (1a7
public void adminLogin(){
driver.findElement(By.name("userId")).sendKeys("sysadmin");
}
我的页面正在加载,但用户名字段没有填充“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)
任何帮助都将不胜感激。在使用
sendkeys()
之前,请尝试使用操作类首先关注元素,如下所示:
Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.name("userId")));
actions.click();
actions.sendKeys("sysadmin");
actions.build().perform();
他面临着类似的问题。您使用的是过时的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库升级到最新版本,因为selenium与Chromedriver存在向后不兼容问题
- 最新的Selenium版本是3.141.59
- 最新的Chromedriver版本是:73.0.3683.20
ChromeDriver下载链接:
Selenium下载链接:
注意:
请确保在导航到后等待一段时间
预期的网址。原因是,元素在
一定的时间流逝。在这种情况下,webdriver在
这一次,driver.findElement()将无法获取web元素
此错误消息
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
- 您使用的是chrome=61.0
- 但是您的JDK版本是1.8.0_25,它非常古老和古老
因此,JDK v8u25、ChromeDriver v2.34和Chrome浏览器v61.0之间存在明显的不匹配
解决方案
- 将JDK升级到最新级别
其他考虑事项
根据最佳做法
- 将ChromeDriver升级到当前级别
- 将Chrome版本升级到当前的Chrome v71-73级别。()
- 通过IDE清理项目工作区,并仅使用所需的依赖项重建项目
- 如果您的基本Web客户端版本太旧,请卸载它并安装最新的GA和Web客户端发布版本
- 重新启动系统
- 执行
@测试
- 始终在
tearDown(){}
方法中调用driver.quit()
,以优雅地关闭和销毁Web驱动程序和Web客户端实例
这是脚本的全部代码吗?你能上传你试图使用的网页的HTML吗?
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