selenium - 如何在 selenium 测试中删除信息栏“Microsoft Edge 正在由自动化测试软件控制”
问题描述
我们正在使用 selenium 对“基于 Chromium 的 Edge”进行测试。“The Chromium Edge”是从https://www.microsoftedgeinsider.com/en-us/download下载的,版本是 80.0.334.2 (Official build) dev (64-bit)。我们从https://msedgewebdriverstorage.z22.web.core.windows.net/获得了匹配的驱动程序 msedgedriver.exe
我们将“C:\Program Files (x86)\Microsoft\Edge Dev\Application”添加到环境“PATH”中,以便在测试期间找到可执行文件“msedge.exe”。使用选项 -Dwebdriver.edge.driver="pathTo\msedgedriver.exe" 启动 selenium 服务器后,我们可以在“Chromium Edge”中运行测试,如下所示:
但是有一个信息栏“Microsoft Edge 正在被自动化测试软件控制”,就像我们用 chrome 浏览器运行测试一样。使用 chrome,我们可以通过将以下 ExperimentalOption 设置为 ChromeOptions 来删除该信息栏
- 使用自动化扩展=假
- excludeSwitches=[启用自动化]
- 首选项={credentials_enable_service=false,配置文件={password_manager_enabled=false}}
我尝试设置相同的选项,但我启动了一个没有信息栏的浏览器,但它是一个 chrome 浏览器,而不是“Chromium Edge”。
解决方案
您可以参考以下代码(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/");
}
}
推荐阅读
- html - Safari 浏览器将 PDF 文件保存为数字而不是实际的 PDF 名称,Chrome 无法处理此链接
- go - 在具有自边的有向多重图中查找所有循环
- autodesk-forge - 将文件上传到 BIM 360 Document Management Forge API 时出现问题
- xml - WSO2 EI 发送对象从一个端点一一响应到另一个端点
- javascript - 如何使用 Ratchet 从服务器 websocket 向特定客户端发送数据
- javascript - 在 IMPORTRANGE 之后隐藏一行
- reactjs - react native 从文本中获取所有链接
- java - 单行文本块
- kubernetes - 是否可以有 1 个 pod 附加不同命名空间的多个 PVC
- vue.js - Casl/vue $can 函数返回 false,但用户拥有该权限