selenium - 如何使用 Edge webdriver 运行 selenium 独立服务器?
问题描述
我正在尝试针对 Edge 运行 Selenium 测试,就像我在 Chrome 或 Internet Explorer 11 上成功运行一样,但它失败了。
我所做的是启动独立的硒,它工作正常:
java -Dwebdriver.edge.driver=C:\tmp\msedgedriver.exe -jar C:\tmp\selenium-server-standalone-3.141.59.jar -port 4445
但是当我运行 Selenium 测试时,它失败并出现以下错误:
我尝试添加“-DbrowserName=edge”,但没有任何区别。
有什么我错过的吗?
构建信息:版本:'3.8.1',修订:'6e95a6684b',时间:'2017-12-01T19:05:32.194Z' 系统信息:主机:'MSEDGEWIN10',ip:'10.0.2.15',操作系统。名称:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_201' 驱动程序信息:driver.version:org.openqa.selenium.remote.server 未知.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:89) 在 org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:171) 在 org.openqa.selenium.remote.server.DefaultSession.(DefaultSession. java:88) 在 org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:72) 在 org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:63) 在 org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:37) 在 org .openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:112) 在 org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:191) 在 org.openqa.selenium.remote .server.DriverServlet.lambda$handleRequest$0(DriverServlet.java:261) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java: 266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748) 08:13:43.301 警告 - 异常:最佳匹配驱动程序提供程序类 org.openqa.selenium.edge.EdgeDriver 无法为功能 {浏览器名称:边缘}
解决方案
这是我编写的使用 Feature on Demand EdgeDriver 的 java 代码。这尚未经过测试,因此如果您使用它,请告诉我它是否有效:
String windir = System.getenv("windir");
boolean is64bit = false;
is64bit = (System.getenv("ProgramFiles(x86)") != null);
String edgeDriverPath = windir + "\\SysWOW64\\MicrosoftWebDriver.exe";
if (!is64bit)
{
edgeDriverPath = windir + "\\System32\\MicrosoftWebDriver.exe";
}
System.setProperty("webdriver.edge.driver", edgeDriverPath);
EdgeOptions edgeOptions = new EdgeOptions();
//edgeOptions.setPageLoadStrategy(stringPageLoadConstant);
try {
driver = new EdgeDriver(edgeOptions);
}
catch (Exception ex)
{
System.out.println ("Problem launching EdgeDriver: " + ex.toString());
}
推荐阅读
- c++ - codeforces 问题名为 Strange List the "MEMORY LIMIT EXCEEDED"
- laravel - 如何解决在 laravel 中创建 cookie 的问题?
- php - 插入查询 mysql 抛出 PDO::exec() 恰好需要 1 个参数,给定 2 个
- android-button - 如何在 onclick 上更改 imagebutton 背景
- python - 使用添加分钟创建新列日期时间(Pandas,Python)
- javascript - PUBLIC_URL 对 locahost 和生产做出反应时为空?
- amazon-web-services - 当我尝试在 s3 权限选项卡中添加读取访问策略时出现无效的 json 错误
- r - 当我单击它时,闪亮的按钮不起作用。某人可以帮助我吗?
- typescript - Typescript中“一级深度”可区分联合的类型缩小
- python - 如何使用 PyQt5 将会话变量返回到我的主代码?