【发布时间】:2018-03-30 13:27:17
【问题描述】:
我正在尝试在自定义测试运行器中执行使用 selenium Web 驱动程序的测试程序。
在测试运行器中,通过反射调用配备 selenium web driver 的测试方法。
当测试程序由 Visual Studio 测试资源管理器运行时,它工作正常。 通过反射动态运行时会出现问题。
测试程序如下。
namespace TrialWebUnitTest
{
public class WebDriverTest01
{
private IWebDriver driver;
[TestMethod]
public void NavigateToSeleniumHQByChrome()
{
string TargetUrl = "https://www.seleniumhq.org/projects/webdriver/";
this.driver = new ChromeDriver();
driver.Manage().Window.Size = new System.Drawing.Size(1000, 800); // <- driver throws exception here.
this.driver.Navigate().GoToUrl(TargetUrl);
this.driver.Dispose();
}
}
}
自定义测试运行器的核心测试执行方法如下。
namespace TrialWebUnitTestRunner
{
public partial class TestForm : Form
{
// test button click's event handler.
private void TestButton_Click(object sender, EventArgs e)
{
string retErrorMsg = string.Empty;
if (!ExecTestDynamically(ref retErrorMsg))
{
// show error information in UI textbox.
this.this.ResultMessage.Text = retErrorMsg;
}
}
internal bool ExecTestDynamically(ref string retErrorMsg)
{
var target = new TrialWebUnitTest.WebDriverTest01();
System.Type targetType = typeof(TrialWebUnitTest.WebDriverTest01);
var method = targetType.GetMethod("NavigateToSeleniumHQByChrome");
try
{
method.Invoke(target, null);
return true
}
catch (Exception exp)
{
retErrorMsg = exp.Message + Environment.NewLine + exp.StackTrance;
return false;
}
}
}
}
异常信息
System.InvalidOperationException:
断开连接:无法连接到渲染器
(会话信息:chrome=65.0.3325.181)
(驱动信息:chromedriver=2.31.488763
示例程序
我编写了一个示例程序来重现该错误。 请从我的 Dropbox 网址下载:https://db.tt/HqUTMOKWBl
您可以单击该链接并下载“TrialWebTestForInspection.zip”。 请在任意文件夹中解压并找到 TrialWebTestForInspection.sln。
该解决方案包含两个项目,“TrialWebUnitTest”和“TrialWebUnitTestRunner”。 第一个是 MS 单元测试,您可以在 Visual Studio 测试资源管理器中运行 3 种测试方法。
这3种测试方法非常简单。他们只需启动与 webdriver 对应的浏览器,然后导航到 Selenium HQ 站点。
另一个项目是一个 WindowsForm 应用程序,它提供了一个非常简单的测试运行器。 它踢掉了之前测试项目中的测试方法。
当您选择使用 IE 或 FireFox 驱动程序的测试方法时,它工作正常。 另一方面,当您选择 Chrome 驱动程序测试时,它会抛出我上面提到的异常。
我想知道的事情。
首先我想知道,这是当前 Chrome 驱动程序版本的错误,还是规范的一部分。
那我想知道,有没有办法避免这个问题。
我担心的是 IWebDriver 规范原本不支持通过反射运行时的正确操作的可能性。
示例程序规范
.NET Framework 4.6.1 版
nuget 包
- MSTest.TestFramework.1.2.0 MSTest.TestAdapter.1.2.0 Selenium.WebDriver.3.11.0 Selenium.WebDriver.ChromeDriver.2.37.0 Selenium.WebDriver.IEDriver.3.11.1 Selenium.Firefox.WebDriver.0.20.0
Chrome浏览器版本65.0.3325.181(正式版)(64位)
【问题讨论】:
-
问题解决了。请参考这里。 github.com/SeleniumHQ/selenium/issues/5705
标签: c# selenium-webdriver selenium-chromedriver