RSelenium sendKeysToActiveElement() 函数抛出未知命令错误
RSelenium sendKeysToActiveElement() function throws unknown command error
我正在尝试使用 RSelenium 的 sendKeysToActiveElement()
函数按回车键,但它正在抛出
以下错误。
remDr$sendKeysToActiveElement(list("", key="back"))
它抛出以下错误:
Selenium message:sendKeysToActiveElement
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DEV-WINDOWS', ip: '192.168.1.18', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'
Driver info: driver.version: unknown
Error: Summary: UnknownCommand
Detail: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource.
Further Details: run errorDetails method
这就是errorDetails() shows
:
remDr$errorDetails()
$stacktrace
[1] "org.openqa.selenium.UnsupportedCommandException: sendKeysToActiveElement\nBuild info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'\nSystem info: host: 'DEV-WINDOWS', ip: '192.168.1.18', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'\nDriver info: driver.version: unknown\r\n\tat org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:218)\r\n\tat org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:117)\r\n\tat org.openqa.selenium.grid.session.remote.ProtocolConverter.handle(ProtocolConverter.java:83)\r\n\tat org.openqa.selenium.grid.session.remote.RemoteSession.execute(RemoteSession.java:129)\r\n\tat org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle[=11=](WebDriverServlet.java:235)\r\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\r\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\r\n\tat java.lang.Thread.run(Thread.java:748)\r\n"
$stackTrace
$stackTrace[[1]]
$stackTrace[[1]]$fileName
[1] "AbstractHttpCommandCodec.java"
$stackTrace[[1]]$methodName
[1] "encode"
$stackTrace[[1]]$className
[1] "org.openqa.selenium.remote.http.AbstractHttpCommandCodec"
$stackTrace[[1]]$lineNumber
[1] 218
$stackTrace[[2]]
$stackTrace[[2]]$fileName
[1] "AbstractHttpCommandCodec.java"
$stackTrace[[2]]$methodName
[1] "encode"
$stackTrace[[2]]$className
[1] "org.openqa.selenium.remote.http.AbstractHttpCommandCodec"
$stackTrace[[2]]$lineNumber
[1] 117
$stackTrace[[3]]
$stackTrace[[3]]$fileName
[1] "ProtocolConverter.java"
$stackTrace[[3]]$methodName
[1] "handle"
$stackTrace[[3]]$className
[1] "org.openqa.selenium.grid.session.remote.ProtocolConverter"
$stackTrace[[3]]$lineNumber
[1] 83
$stackTrace[[4]]
$stackTrace[[4]]$fileName
[1] "RemoteSession.java"
$stackTrace[[4]]$methodName
[1] "execute"
$stackTrace[[4]]$className
[1] "org.openqa.selenium.grid.session.remote.RemoteSession"
$stackTrace[[4]]$lineNumber
[1] 129
$stackTrace[[5]]
$stackTrace[[5]]$fileName
[1] "WebDriverServlet.java"
$stackTrace[[5]]$methodName
[1] "lambda$handle[=11=]"
$stackTrace[[5]]$className
[1] "org.openqa.selenium.remote.server.WebDriverServlet"
$stackTrace[[5]]$lineNumber
[1] 235
$stackTrace[[6]]
$stackTrace[[6]]$fileName
[1] "Executors.java"
$stackTrace[[6]]$methodName
[1] "call"
$stackTrace[[6]]$className
[1] "java.util.concurrent.Executors$RunnableAdapter"
$stackTrace[[6]]$lineNumber
[1] 511
$stackTrace[[7]]
$stackTrace[[7]]$fileName
[1] "FutureTask.java"
$stackTrace[[7]]$methodName
[1] "run"
$stackTrace[[7]]$className
[1] "java.util.concurrent.FutureTask"
$stackTrace[[7]]$lineNumber
[1] 266
$stackTrace[[8]]
$stackTrace[[8]]$fileName
[1] "ThreadPoolExecutor.java"
$stackTrace[[8]]$methodName
[1] "runWorker"
$stackTrace[[8]]$className
[1] "java.util.concurrent.ThreadPoolExecutor"
$stackTrace[[8]]$lineNumber
[1] 1149
$stackTrace[[9]]
$stackTrace[[9]]$fileName
[1] "ThreadPoolExecutor.java"
$stackTrace[[9]]$methodName
[1] "run"
$stackTrace[[9]]$className
[1] "java.util.concurrent.ThreadPoolExecutor$Worker"
$stackTrace[[9]]$lineNumber
[1] 624
$stackTrace[[10]]
$stackTrace[[10]]$fileName
[1] "Thread.java"
$stackTrace[[10]]$methodName
[1] "run"
$stackTrace[[10]]$className
[1] "java.lang.Thread"
$stackTrace[[10]]$lineNumber
[1] 748
$message
[1] "sendKeysToActiveElement\nBuild info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'\nSystem info: host: 'DEV-WINDOWS', ip: '192.168.1.18', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'\nDriver info: driver.version: unknown"
$error
[1] "unknown command"
sessionInfo()
显示如下:
> sessionInfo()
R version 4.0.0 (2020-04-24)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_India.1252 LC_CTYPE=English_India.1252
[3] LC_MONETARY=English_India.1252 LC_NUMERIC=C
[5] LC_TIME=English_India.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
other attached packages:
[1] knitr_1.28 XML_3.99-0.3 RSelenium_1.7.7
[4] animint2_2020.3.2 testthat_2.3.2
loaded via a namespace (and not attached):
[1] Rcpp_1.0.4.6 compiler_4.0.0 plyr_1.8.6
[4] bitops_1.0-6 tools_4.0.0 pkgload_1.1.0
[7] digest_0.6.25 jsonlite_1.6.1 evaluate_0.14
[10] lifecycle_0.2.0 gtable_0.3.0 rlang_0.4.6
[13] cli_2.0.2 rstudioapi_0.11 curl_4.3
[16] yaml_2.2.1 xfun_0.14 binman_0.1.1
[19] stringr_1.4.0 withr_2.2.0 httr_1.4.1
[22] xml2_1.3.2 desc_1.2.0 askpass_1.1
[25] caTools_1.18.0 rappdirs_0.3.1 rprojroot_1.3-2
[28] grid_4.0.0 glue_1.4.1 R6_2.4.1
[31] processx_3.4.2 fansi_0.4.1 rmarkdown_2.2
[34] RJSONIO_1.3-1.4 farver_2.0.3 semver_0.2.0
[37] magrittr_1.5 backports_1.1.7 scales_1.1.1
[40] ps_1.3.3 htmltools_0.4.0 assertthat_0.2.1
[43] colorspace_1.4-1 labeling_0.3 stringi_1.4.6
[46] openssl_1.4.1 munsell_0.5.0 crayon_1.3.4
[49] wdman_0.2.5
RSelenium 文档的内容如下:
This is a set of R Bindings for Selenium 2.0 Remote WebDriver, which you can download from http://selenium-release.storage.googleapis.com/index.html. This binding will not work with the 1.0 version of Selenium.
由于 selenium v3 中的重大更改,此功能无法正常工作。
我使用了错误版本的 selenium。我使用 v3 而不是 v2。
更改 selenium 版本解决了问题。
我 运行 遇到了同样的问题,@lazycipher 建议,降级 selenium 版本有帮助。我通过以下方式做到了这一点:
- 转到http://selenium-release.storage.googleapis.com/index.html
- 导航到
2.53
文件夹
- 下载
selenium-server-standalone-2.53.1.jar
- 将
jar
文件移动到以下位置的文件夹中:
- Linux:
/home/[user]/.local/share/binman_seleniumserver/generic/2.53.1
- Windows:
C:\Users\[user]\AppData\Local\binman\binman_seleniumserver\generic.53.1\
- MACOSX:
/Users/admin/Library/Application\Support/binman_seleniumserver/generic/2.53.1/
- 使用
binman::list_versions("seleniumserver")
检查是否列出了下载的版本
- 运行
RSelenium::rsDriver()
与 version = '2.53.1'
参数
事实证明,当RSelenium::rsDriver()
访问selenium 版本时,它引用binman
包将其定向到正确的selenium jar 文件。如果将 jar 文件放在正确的文件夹中,binman
会检测到它,因此 RSelenium
.
会检测到它
我正在尝试使用 RSelenium 的 sendKeysToActiveElement()
函数按回车键,但它正在抛出
以下错误。
remDr$sendKeysToActiveElement(list("", key="back"))
它抛出以下错误:
Selenium message:sendKeysToActiveElement
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DEV-WINDOWS', ip: '192.168.1.18', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'
Driver info: driver.version: unknown
Error: Summary: UnknownCommand
Detail: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource.
Further Details: run errorDetails method
这就是errorDetails() shows
:
remDr$errorDetails()
$stacktrace
[1] "org.openqa.selenium.UnsupportedCommandException: sendKeysToActiveElement\nBuild info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'\nSystem info: host: 'DEV-WINDOWS', ip: '192.168.1.18', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'\nDriver info: driver.version: unknown\r\n\tat org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:218)\r\n\tat org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:117)\r\n\tat org.openqa.selenium.grid.session.remote.ProtocolConverter.handle(ProtocolConverter.java:83)\r\n\tat org.openqa.selenium.grid.session.remote.RemoteSession.execute(RemoteSession.java:129)\r\n\tat org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle[=11=](WebDriverServlet.java:235)\r\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\r\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\r\n\tat java.lang.Thread.run(Thread.java:748)\r\n"
$stackTrace
$stackTrace[[1]]
$stackTrace[[1]]$fileName
[1] "AbstractHttpCommandCodec.java"
$stackTrace[[1]]$methodName
[1] "encode"
$stackTrace[[1]]$className
[1] "org.openqa.selenium.remote.http.AbstractHttpCommandCodec"
$stackTrace[[1]]$lineNumber
[1] 218
$stackTrace[[2]]
$stackTrace[[2]]$fileName
[1] "AbstractHttpCommandCodec.java"
$stackTrace[[2]]$methodName
[1] "encode"
$stackTrace[[2]]$className
[1] "org.openqa.selenium.remote.http.AbstractHttpCommandCodec"
$stackTrace[[2]]$lineNumber
[1] 117
$stackTrace[[3]]
$stackTrace[[3]]$fileName
[1] "ProtocolConverter.java"
$stackTrace[[3]]$methodName
[1] "handle"
$stackTrace[[3]]$className
[1] "org.openqa.selenium.grid.session.remote.ProtocolConverter"
$stackTrace[[3]]$lineNumber
[1] 83
$stackTrace[[4]]
$stackTrace[[4]]$fileName
[1] "RemoteSession.java"
$stackTrace[[4]]$methodName
[1] "execute"
$stackTrace[[4]]$className
[1] "org.openqa.selenium.grid.session.remote.RemoteSession"
$stackTrace[[4]]$lineNumber
[1] 129
$stackTrace[[5]]
$stackTrace[[5]]$fileName
[1] "WebDriverServlet.java"
$stackTrace[[5]]$methodName
[1] "lambda$handle[=11=]"
$stackTrace[[5]]$className
[1] "org.openqa.selenium.remote.server.WebDriverServlet"
$stackTrace[[5]]$lineNumber
[1] 235
$stackTrace[[6]]
$stackTrace[[6]]$fileName
[1] "Executors.java"
$stackTrace[[6]]$methodName
[1] "call"
$stackTrace[[6]]$className
[1] "java.util.concurrent.Executors$RunnableAdapter"
$stackTrace[[6]]$lineNumber
[1] 511
$stackTrace[[7]]
$stackTrace[[7]]$fileName
[1] "FutureTask.java"
$stackTrace[[7]]$methodName
[1] "run"
$stackTrace[[7]]$className
[1] "java.util.concurrent.FutureTask"
$stackTrace[[7]]$lineNumber
[1] 266
$stackTrace[[8]]
$stackTrace[[8]]$fileName
[1] "ThreadPoolExecutor.java"
$stackTrace[[8]]$methodName
[1] "runWorker"
$stackTrace[[8]]$className
[1] "java.util.concurrent.ThreadPoolExecutor"
$stackTrace[[8]]$lineNumber
[1] 1149
$stackTrace[[9]]
$stackTrace[[9]]$fileName
[1] "ThreadPoolExecutor.java"
$stackTrace[[9]]$methodName
[1] "run"
$stackTrace[[9]]$className
[1] "java.util.concurrent.ThreadPoolExecutor$Worker"
$stackTrace[[9]]$lineNumber
[1] 624
$stackTrace[[10]]
$stackTrace[[10]]$fileName
[1] "Thread.java"
$stackTrace[[10]]$methodName
[1] "run"
$stackTrace[[10]]$className
[1] "java.lang.Thread"
$stackTrace[[10]]$lineNumber
[1] 748
$message
[1] "sendKeysToActiveElement\nBuild info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'\nSystem info: host: 'DEV-WINDOWS', ip: '192.168.1.18', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'\nDriver info: driver.version: unknown"
$error
[1] "unknown command"
sessionInfo()
显示如下:
> sessionInfo()
R version 4.0.0 (2020-04-24)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_India.1252 LC_CTYPE=English_India.1252
[3] LC_MONETARY=English_India.1252 LC_NUMERIC=C
[5] LC_TIME=English_India.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
other attached packages:
[1] knitr_1.28 XML_3.99-0.3 RSelenium_1.7.7
[4] animint2_2020.3.2 testthat_2.3.2
loaded via a namespace (and not attached):
[1] Rcpp_1.0.4.6 compiler_4.0.0 plyr_1.8.6
[4] bitops_1.0-6 tools_4.0.0 pkgload_1.1.0
[7] digest_0.6.25 jsonlite_1.6.1 evaluate_0.14
[10] lifecycle_0.2.0 gtable_0.3.0 rlang_0.4.6
[13] cli_2.0.2 rstudioapi_0.11 curl_4.3
[16] yaml_2.2.1 xfun_0.14 binman_0.1.1
[19] stringr_1.4.0 withr_2.2.0 httr_1.4.1
[22] xml2_1.3.2 desc_1.2.0 askpass_1.1
[25] caTools_1.18.0 rappdirs_0.3.1 rprojroot_1.3-2
[28] grid_4.0.0 glue_1.4.1 R6_2.4.1
[31] processx_3.4.2 fansi_0.4.1 rmarkdown_2.2
[34] RJSONIO_1.3-1.4 farver_2.0.3 semver_0.2.0
[37] magrittr_1.5 backports_1.1.7 scales_1.1.1
[40] ps_1.3.3 htmltools_0.4.0 assertthat_0.2.1
[43] colorspace_1.4-1 labeling_0.3 stringi_1.4.6
[46] openssl_1.4.1 munsell_0.5.0 crayon_1.3.4
[49] wdman_0.2.5
RSelenium 文档的内容如下:
This is a set of R Bindings for Selenium 2.0 Remote WebDriver, which you can download from http://selenium-release.storage.googleapis.com/index.html. This binding will not work with the 1.0 version of Selenium.
由于 selenium v3 中的重大更改,此功能无法正常工作。
我使用了错误版本的 selenium。我使用 v3 而不是 v2。
更改 selenium 版本解决了问题。
我 运行 遇到了同样的问题,@lazycipher 建议,降级 selenium 版本有帮助。我通过以下方式做到了这一点:
- 转到http://selenium-release.storage.googleapis.com/index.html
- 导航到
2.53
文件夹 - 下载
selenium-server-standalone-2.53.1.jar
- 将
jar
文件移动到以下位置的文件夹中:- Linux:
/home/[user]/.local/share/binman_seleniumserver/generic/2.53.1
- Windows:
C:\Users\[user]\AppData\Local\binman\binman_seleniumserver\generic.53.1\
- MACOSX:
/Users/admin/Library/Application\Support/binman_seleniumserver/generic/2.53.1/
- Linux:
- 使用
binman::list_versions("seleniumserver")
检查是否列出了下载的版本
- 运行
RSelenium::rsDriver()
与version = '2.53.1'
参数
事实证明,当RSelenium::rsDriver()
访问selenium 版本时,它引用binman
包将其定向到正确的selenium jar 文件。如果将 jar 文件放在正确的文件夹中,binman
会检测到它,因此 RSelenium
.