Microsoft Edge 的“无效参数:'handle' 必须是字符串”错误以及如何添加“w3c:false”功能?
Posted
技术标签:
【中文标题】Microsoft Edge 的“无效参数:\'handle\' 必须是字符串”错误以及如何添加“w3c:false”功能?【英文标题】:"Invalid argument: 'handle' must be a string" error for Microsoft Edge and how to add "w3c: false" capability?Microsoft Edge 的“无效参数:'handle' 必须是字符串”错误以及如何添加“w3c:false”功能? 【发布时间】:2021-08-13 20:58:09 【问题描述】:我收到 “invalid argument: 'handle' must be a string” Microsoft Edge 错误。
我认为当我添加 "w3c:false" 能力后问题会得到解决。
“w3c: false”的代码块:
if (CustomRunner.deviceThreadLocal.get().getBrowser().equals(BrowserType.EDGE))
EdgeOptions edgeOptions = new EdgeOptions();
edgeOptions.setCapability("w3c", false);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(EdgeOptions.CAPABILITY, edgeOptions);
edgeOptions.merge(capabilities);
EdgeOptions.java:
package org.openqa.selenium.edge;
import static org.openqa.selenium.remote.CapabilityType.PAGE_LOAD_STRATEGY;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.remote.BrowserType;
import org.openqa.selenium.remote.CapabilityType;
import java.util.Objects;
public class EdgeOptions extends MutableCapabilities
public EdgeOptions()
setCapability(CapabilityType.BROWSER_NAME, BrowserType.EDGE);
@Override
public EdgeOptions merge(Capabilities extraCapabilities)
super.merge(extraCapabilities);
return this;
public void setPageLoadStrategy(String strategy)
setCapability(PAGE_LOAD_STRATEGY, Objects.requireNonNull(strategy));
public EdgeOptions setProxy(Proxy proxy)
setCapability(CapabilityType.PROXY, proxy);
return this;
但是当我想添加这个功能时,我无法运行代码,因为EdgeOptions.java中没有CAPABILITY。
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:我不知道你如何使用handle
,但是关于添加w3c:false
的问题,那是由于selenium服务器版本。使用 selenium server 3.141.59 时会出现该问题。我使用 selenium sever 4.0.0 beta 2,它适用于以下代码:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Edgedisablew3c
public static void main(String[] args)
System.setProperty("webdriver.edge.driver", "Your_path_here\\msedgedriver.exe");
EdgeOptions edgeOptions = new EdgeOptions();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(EdgeOptions.CAPABILITY, edgeOptions);
capabilities.setCapability("w3c", false);
edgeOptions.merge(capabilities);
WebDriver driver = new EdgeDriver(edgeOptions);
driver.get("https://www.google.com");
System.out.println(capabilities.getCapability("w3c")); //Getting the value of w3c to verify it.
driver.close();
driver.quit();
【讨论】:
以上是关于Microsoft Edge 的“无效参数:'handle' 必须是字符串”错误以及如何添加“w3c:false”功能?的主要内容,如果未能解决你的问题,请参考以下文章