Selenium “如何删除信息栏”;Microsoft Edge由自动化测试软件“控制”;硒试验

Selenium “如何删除信息栏”;Microsoft Edge由自动化测试软件“控制”;硒试验,selenium,microsoft-edge,chromium,Selenium,Microsoft Edge,Chromium,我们正在使用硒对“铬基边缘”进行测试。 “Chromium Edge”从下载,版本为80.0.334.2(官方版本)dev(64位)。 我们从中获得了匹配的驱动程序msedgedriver.exe 我们将“C:\ProgramFiles(x86)\Microsoft\Edge Dev\Application”添加到环境“PATH”中,以便在测试期间找到可执行文件“msedge.exe”。 使用选项-Dwebdriver.edge.driver=“pathTo\msedgedriver.exe”启

我们正在使用硒对“铬基边缘”进行测试。 “Chromium Edge”从下载,版本为80.0.334.2(官方版本)dev(64位)。 我们从中获得了匹配的驱动程序msedgedriver.exe

我们将“C:\ProgramFiles(x86)\Microsoft\Edge Dev\Application”添加到环境“PATH”中,以便在测试期间找到可执行文件“msedge.exe”。 使用选项-Dwebdriver.edge.driver=“pathTo\msedgedriver.exe”启动selenium服务器后,我们可以在“Chromium edge”中运行测试,如下所示:

但有一个信息栏“MicrosoftEdge由自动化测试软件控制”,就像我们用chrome浏览器运行测试一样。使用chrome,我们可以通过将以下实验选项设置为ChromeOptions来删除该信息栏

  • useAutomationExtension=false
  • ExcludeSwitchs=[启用自动化]
  • prefs={credentials\u enable\u service=false,profile={password\u manager\u enabled=false}
  • 我试着设置相同的选项,我得到了一个没有信息栏的浏览器,但它是一个chrome浏览器而不是“chrome Edge”。

    你看对了

    根据这篇文章,微软计划于2020年1月15日发布其Edge Chromium浏览器,可用于Windows 10、Windows 7、Windows 8和macOS。就在那之后

    现在,这一测试版也意味着微软的Chromium浏览器即将发布。微软首先发布了它的Chromium,在过去的四个月里,该公司一直在与谷歌合作,改进Chromium for Windows。这项工作还涉及微软(Microsoft)适应推出Chromium浏览器的节奏


    因此,添加了
    实验选项
    您可以看到微软的Edge Chrome浏览器几乎像Chrome/Chrome浏览器。

    您可以参考以下代码(C代码)来设置Chrome选项并删除信息栏

            var edgechromiumService = ChromeDriverService.CreateDefaultService(@"E:\edgedriver_win64", "msedgedriver.exe");
            // user need to pass the driver path here....
            ChromeOptions edgechromeOptions = new ChromeOptions
            {
                BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge Dev\Application\msedge.exe",
            };
    
            edgechromeOptions.AddAdditionalCapability("useAutomationExtension", false);
            edgechromeOptions.AddExcludedArgument("enable-automation"); 
    
            using (IWebDriver driver = new ChromeDriver(edgechromiumService, edgechromeOptions))
            {
                driver.Navigate().GoToUrl("https://www.bing.com/");
                Console.WriteLine(driver.Title.ToString());
    
                //driver.Close();
                Console.ReadKey();
            }
    
    结果如下:

    对于Java应用程序,请尝试使用以下代码:

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions; 
    import org.openqa.selenium.edge.EdgeOptions;    
    import java.util.*;  
    public class Edgeauto {
        public static void main(String[] args) { 
            System.setProperty("webdriver.chrome.driver", "your\\path\\to\\edge\\webdriver\\msedgedriver.exe");
            ChromeOptionschromeOptions = new ChromeOptions();
            chromeOptions.setBinary("C:\\Program Files (x86)\\Microsoft\\Edge Dev\\Application\\msedge.exe");
    
            chromeOptions.setExperimentalOption("useAutomationExtension", false);
            chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
    
            EdgeOptions edgeOptions = new EdgeOptions().merge(chromeOptions);
            WebDriver driver = new ChromeDriver(edgeOptions);
            driver.get("https://www.google.com/");
         }
    }
    

    @Zhi Lv-MSFT

    您正在启动的浏览器是什么?铬边还是铬边?我使用的是selenium java代码,如果我像下面那样运行类似的java代码,它将失败并出错 驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置

    System.setProperty("webdriver.edge.driver", "C:\\SeleniumPlus\\extra\\msedgedriver.exe");
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.setBinary("C:\\Program Files (x86)\\Microsoft\\Edge Dev\\Application\\msedge.exe");
    chromeOptions.setExperimentalOption("useAutomationExtension", false);
    chromeOptions.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    WebDriver driver = new ChromeDriver(chromeOptions);
    driver.get("http://www.google.com");
    
    如果我创建一个边缘功能并将ChromeOption合并到其中,我可以看到“ChromeEdge”在没有“信息栏”的情况下启动,但它只是卡在那里,并因错误而失败 未知错误:无法识别的Chrome版本:Edg/80.0.361.5

    System.setProperty("webdriver.edge.driver", "C:\\SeleniumPlus\\extra\\msedgedriver.exe");
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.setBinary("C:\\Program Files (x86)\\Microsoft\\Edge Dev\\Application\\msedge.exe");
    chromeOptions.setExperimentalOption("useAutomationExtension", false);
    chromeOptions.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    DesiredCapabilities m_capability = DesiredCapabilities.edge();
    m_capability.merge(chromeOptions);
    RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), m_capability);
    driver.get("http://www.google.com");
    
    从“selenium服务器”控制台,我可以看到,“browserName”是“chrome”,我想这就是chrome的选项正在努力摆脱“信息栏”的原因

    如果我在如下合并chrome的选项后将“browserName”设置为“MicrosoftEdge”,它可以启动“chrome Edge”,但chrome的选项不再工作,这意味着“信息栏”仍然存在

    m_capability.merge(chromeOptions);
    m_capability.setCapability(CapabilityType.BROWSER_NAME, BrowserType.EDGE);
    

    我想我可以解释所有的困惑(也许对我自己来说,这是一个信息栏。在Chrome/Chrome中,你可以通过:
    ——disable infobar
    来禁用信息栏的显示。我不使用Edge,所以没有测试过它。它不适用于Chrome 78.0.3904.108,我通过了这个参数“disable infobar”通过ChromeOptions,我可以从chrome日志文件中验证,它包含[157647237.703][INFO]:启动chrome:“C:\Program Files(x86)\Google\chrome\Application\chrome.exe”…--禁用信息栏。但是“信息栏”仍然存在。我们可以使用上面提到的选项删除chrome的信息栏。对不起,我不明白。你是说这个吗“实验选项”将在2020年1月15日发布之前不受支持,对吗?我使用的是selnium的Java,我可以使用ChromeOptions设置“实验选项”,然后将ChromeOptions设置为启动chrome浏览器的功能。我检查了org.openqa.selenium.edge.EdgeOptions,它不提供此类设置方法”“实验选项”。我正在使用MicrosoftEdge(Chromium)开发浏览器,版本是:
    Version80.0.361.5(官方版本)开发(64位)
    ,由于我安装了多个版本的webdriver和浏览器版本,我必须分配浏览器和web驱动程序路径。请检查我回复中的Java代码。@lei wang,此问题是否已解决?如果未解决,是否需要进一步帮助?如果已解决,我建议您尝试将答案标记为已接受的答案或者这个问题在48小时后,当它可供mark使用时。它可以在将来帮助其他社区成员解决类似的问题。感谢您的理解。@ZhiLv MSFT,很抱歉回答得太晚。我尝试了您的java代码,但不起作用。在步骤驱动程序中。get(“);代码引发以下异常:启动MSEdge驱动程序80.0.361.23请保护MSEdge驱动程序和相关测试框架使用的端口,以防止恶意代码访问。未创建会话:未找到匹配的功能生成信息:版本:'3.14.0',…系统信息:…os.name:'Windows 10',os.arch:'x86',os.version:'10.0',java。版本:'1.8.0_112'驱动程序信息:Driver.version:ChromeDriverOK,我发现了窍门,我们应该完全使用“chrome Edge”作为chrome浏览器。在java代码中,我们应该删除行EdgeOptions EdgeOptions=new EdgeOptions()。合并(chromeOptions);并直接使用“chromeOptions”创建ChromeDriver,如下WebDriver driver=new ChromeDriver(chromeOptions);
    m_capability.merge(chromeOptions);
    m_capability.setCapability(CapabilityType.BROWSER_NAME, BrowserType.EDGE);