java - Selenium Edge WebDriver (Chromium) - 未创建会话:未找到匹配的功能
问题描述
我正在尝试使用 Java 和 Edge 驱动程序(基于 Chromium)运行 Selenium 测试。
我安装的 Edge Dev 的版本Windows 10
是83.0.478.37
(Official build dev 64-bit):
硒版本:3.141.59
我为此使用了 webdrivermanager 设置,并使用了此处提供的示例。
我在不使用 webdriver manager 的情况下尝试了它包含的许多选项,但仍然出现错误。
不使用 Webdriver 管理器
System.setProperty("webdriver.edge.driver", System.getProperty("user.dir")
+ "\\drivers\\msedgedriver.exe");
EdgeOptions edgeOptions = new EdgeOptions();
chromeOptions = new ChromeOptions();
chromeOptions.addArguments("disable-gpu");
chromeOptions.setBinary("C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe");
edgeOptions = edgeOptions.merge(chromeOptions);
remDriver = new EdgeDriver(edgeOptions);
并从这里 遵循其他解决方案
我错过了什么吗?
下面的错误堆栈跟踪 -
org.openqa.selenium.SessionNotCreatedException: session not created: No matching capabilities found
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'VM-83135Y0-RDS', ip: '10.232.38.151', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: driver.version: EdgeDriver
remote stacktrace: Backtrace:
Ordinal0 [0x00007FF7AE6E1BD2+3414994]
Ordinal0 [0x00007FF7AE5B75B2+2192818]
Ordinal0 [0x00007FF7AE45477F+739199]
Ordinal0 [0x00007FF7AE3DF5BF+259519]
Ordinal0 [0x00007FF7AE3DEEB4+257716]
Ordinal0 [0x00007FF7AE3E0601+263681]
Ordinal0 [0x00007FF7AE3DD68F+251535]
Ordinal0 [0x00007FF7AE3BA663+108131]
Ordinal0 [0x00007FF7AE3BB9CE+113102]
Ordinal0 [0x00007FF7AE5D24F1+2303217]
GetHandleVerifier [0x00007FF7AE85E564+1425828]
GetHandleVerifier [0x00007FF7AE85E32A+1425258]
GetHandleVerifier [0x00007FF7AE8762E1+1523489]
GetHandleVerifier [0x00007FF7AE85EB7B+1427387]
Ordinal0 [0x00007FF7AE5C8797+2262935]
Ordinal0 [0x00007FF7AE5D3ECA+2309834]
Ordinal0 [0x00007FF7AE5F20C8+2433224]
BaseThreadInitThunk [0x00007FFE43164034+20]
RtlUserThreadStart [0x00007FFE453A3691+33]
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:423)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
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.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:141)
at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:130)
解决方案
尝试将 DesiredCapability PLATFORM 设置为 WINDOWS 而不是 WIN10:
能力.setPlatform(平台.WINDOWS);
您可以使用 url 检查平台:http://<NODE_HOST>:<YOUR_DRIVER_PORT>/status
将 <NODE_HOST> 替换为您的节点主机名或 IP 地址,将 <YOUR_DRIVER_PORT> 替换为已启动驱动程序的端口。
如果您在调试模式下通过在启动节点时传递 -debug 来启动节点,则可以轻松地从节点日志中获取此 URL,然后搜索类似于以下的行:
调试 [UrlChecker.lambda$waitUntilAvailable$1] - 轮询 http://localhost:48415/status
http://localhost:48415/状态
{"value":{"build":{"version":"88.0.4324.96 (68dba2d8a0b149a1d3afac56fa74648032bcf46b-refs/branch-heads/4324@{#1784})"},"message":"ChromeDriver 准备好进行新会话。" ,"os":{"arch":"x86_64","name":"Windows NT","version":"10.0.19041"},"ready":true}}
即使我安装了 Windows10,它也会返回 "name":"Windows NT","version":"10.0.19041",因此尝试使用 WINDOWS 作为平台,它工作得非常好!!!
推荐阅读
- php - Ajax POST --> 不传递数据
- python - 计算许多三角形的有符号面积
- vuejs2 - 在 Vue 中,如何批量更改 DOM 元素?
- mysql - MYSQL 事件语法错误
- java - 图像不是 PDF 格式,使用 ITextRenderer
- android - 在 SurfaceView 上捏缩放
- c# - 使用图形 API 上传到 MS Teams 的文档已损坏
- google-apps-script - 谷歌工作表代码 - 单击按钮时编辑,将行从工作表 1 添加到工作表 2
- scala - 为什么具有不同类型元素的集合不适用于迭代?
- unity3d - unity小我安卓手机不保存进度