【问题标题】:"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

我该如何解决这个问题?

【问题讨论】:

    标签: java selenium microsoft-edge w3c 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 2019-01-16
      相关资源
      最近更新 更多