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”功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Linux中安装Microsoft Edge浏览器

Microsoft Edge 分屏 推荐

新版 Microsoft Edge 浏览器介绍

下一个浏览器,全新Microsoft Edge

软件推荐 | Microsoft edge

Windows 10 系统Microsoft Edge的使用手册