c# - OpenQA.Selenium.WebDriverException
问题描述
嗨,我有 ac# 窗口表单应用程序,它在工作之前使用 selenium 打开边缘,但几个月后我收到此错误
An unhandled exception of type 'OpenQA.Selenium.WebDriverException' occurred in WebDriver.dll
Additional information: A exception with a null response was thrown sending an HTTP request to the remote WebDriver server for URL http://localhost:53335/session. The status of the exception was ReceiveFailure, and the message was: The underlying connection was closed: An unexpected error occurred on a receive.
这是堆栈跟踪
at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Edge.EdgeDriver..ctor(EdgeDriverService service, EdgeOptions options, TimeSpan commandTimeout)
at OpenQA.Selenium.Edge.EdgeDriver..ctor(EdgeDriverService service, EdgeOptions options)
at OpenQA.Selenium.Edge.EdgeDriver..ctor(EdgeDriverService service)
at XRF_Reader.DPRS_Main.XRF_Reader_Load(Object sender, EventArgs e) in c:\Users\****\Documents\projects\DPRS\DPRS\DPRS_Main.cs:line 75
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at MetroFramework.Forms.MetroForm.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at MetroFramework.Forms.MetroForm.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
我使用 Selenium webdriver - v 3.141.0 selenium webdriver IE v 3.141.0
这是我的代码
var driverService = EdgeDriverService.CreateDefaultService();
EdgeOptions options = new EdgeOptions();
//var driver = new EdgeDriver(driverService);
edgeDriver = new EdgeDriver(driverService);
edgeDriver.Navigate().GoToUrl(Config.SpcUrl);
解决方案
对于 Microsoft Edge 42.17134.1.0,MicrosoftEdge HTML 17.17134。
您可以从此链接下载 Release 17134 版本的 Edge WebDriver 。
然后使用以下代码使用 webDriver(将驱动程序路径更改为您自己的):
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
namespace ecwebdriver
{
public class edgewebdriver
{
static void Main(string[] args)
{
var driverpath = @"C:\Windows\System32";
using (var driver = new EdgeDriver(driverpath))
{
// Navigate to Bing
driver.Url = "https://www.bing.com/";
// Find the search box and query for webdriver
var element = driver.FindElementById("sb_form_q");
element.SendKeys("webdriver");
element.SendKeys(Keys.Enter);
driver.Quit();
}
}
}
}
对于 Edge Chromium 版本(81.0.416.72(官方构建)(64 位))
从这里下载 Selenium 4.00-alpha05 的 C# 绑定或通过 Nuget 包安装。
从 <a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/#downloads" rel="nofollow noreferrer">此页面下载 Microsoft Edge 驱动程序的匹配版本。
然后,使用以下代码(将驱动程序路径和网站 url 更改为您自己的):
using OpenQA.Selenium.Edge;
using System.Threading;
namespace ecwebdriver
{
public class edgewebdriver
{
static void Main(string[] args)
{
EdgeOptions edgeOptions = new EdgeOptions();
edgeOptions.UseChromium = true;
edgeOptions.BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
var msedgedriverDir = @"E:\webdriver";
var driver = new EdgeDriver(msedgedriverDir, edgeOptions);
driver.Navigate().GoToUrl("<website url>");
Thread.Sleep(3000);
driver.Close();
}
}
}
推荐阅读
- javascript - 如何在 div 中获取 div 或图像的位置(顶部和左侧位置)并在 CSS 中使用这些值?
- swift - Appdelegate sigabrt 没有出现任何东西!在主故事板中
- neo4j - 浏览 Neo4j 中的列表
- java - Spring boot 1.x,如何将指标增加一个数量
- swift - 使用 swift 在 macOS 中打开新的伪终端设备文件
- git - 删除 git 历史记录中的多合并功能分支
- django - 如何在 django 中保存数组数据?
- php - 使用 PHP 和 mysql 创建 CSV 文件
- javascript - 具有多个返回值的 Ajax 调用服务
- datetime - 在 java 8 中解析时间字符串 - ClockHourOfAmPm 的值无效