问题描述
我收到 “无效参数:'handle' 必须是字符串” 错误,用于 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。
我该如何解决这个问题?
解决方法
我不知道您如何使用 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();
}
}