c# - chromedriver - 忽略证书错误
c# - chromedriver - ignore-certificate-errors
我正在尝试将 ChromeDriver 2.4.226107 与 Selenium 2.45、Google Chrome 42.0.2311.135、Visual Studio 2012 和 .NET 4.5 一起使用。我的小测试应用程序编译并 运行s,但是当它启动新的 Chrome window 时,我收到此错误:
"You are using an unsupported command-line flag: --ignore-certifiate-errors. Stability and security will suffer."
我仔细阅读了 this post 并尝试了很多建议的修复方法,但没有任何效果。一次又一次看到的workaround/solution提议是这样做的:
options.AddArgument("test-type");
这对 Chrome 42.0 没有任何作用。这是我的 C# 代码(控制台应用程序):
using(var driver = new ChromeDriver()) {
driver.Navigate().GoToUrl("http://localhost/test.aspx");
}
黄色条内有错误的 Chrome window 如下所示:
- 有解决办法吗?
- 在 Chrome webapps 中是否有 better/simpler 方法比 Selenium 运行 自动化测试?
我不知道发生了什么,但今天早上突然间一切正常。昨晚这个相同的代码不起作用。无论如何,如果它对任何人有帮助,这里是 chromedriver 2.5、.NET 4.5 和 .NET 的 Selenium 2.45 二进制文件的完整工作 C# 代码:
static void Main(string[] args) {
ChromeOptions options = new ChromeOptions();
options.AddArgument("test-type");
// Initialize the Chrome Driver
using(var driver = new ChromeDriver(options)) {
driver.Navigate().GoToUrl("http://localhost/test.aspx");
// Get User Name field, Password field and Login Button
var userNameField = driver.FindElementById("txtUsername");
var userPasswordField = driver.FindElementById("txtPassword");
var loginButton = driver.FindElementById("btnLogin");
// Type user name and password
userNameField.SendKeys("MyUSN");
userPasswordField.SendKeys("MyPWD");
// and click the login button
loginButton.Click();
// Take a screenshot and save it into screen.png
driver.GetScreenshot().SaveAsFile(@"F:\temp\screen.png", ImageFormat.Png);
Console.ReadLine();
}
}
注意:要为所有测试重用相同的 Chrome 浏览器 window,请创建一个静态 class 变量:
private static ChromeDriver driver;
(事实上,您可能希望将所有 class 级变量设为静态。)
然后执行类似以下操作,以便您的 ChromeDriver 句柄可以在所有测试中重复使用:
[ClassInitialize] // this only executes ONCE per test-run (not once per test!)
public static void OneTimeSetup(TestContext ctxt) {
ChromeOptions options = new ChromeOptions();
options.AddArgument("test-type");
options.AddArgument("start-maximized");
options.LeaveBrowserRunning = true;
driver = new ChromeDriver(@"C:\MyStuff", options);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(4));
}
我正在尝试将 ChromeDriver 2.4.226107 与 Selenium 2.45、Google Chrome 42.0.2311.135、Visual Studio 2012 和 .NET 4.5 一起使用。我的小测试应用程序编译并 运行s,但是当它启动新的 Chrome window 时,我收到此错误:
"You are using an unsupported command-line flag: --ignore-certifiate-errors. Stability and security will suffer."
我仔细阅读了 this post 并尝试了很多建议的修复方法,但没有任何效果。一次又一次看到的workaround/solution提议是这样做的:
options.AddArgument("test-type");
这对 Chrome 42.0 没有任何作用。这是我的 C# 代码(控制台应用程序):
using(var driver = new ChromeDriver()) {
driver.Navigate().GoToUrl("http://localhost/test.aspx");
}
黄色条内有错误的 Chrome window 如下所示:
- 有解决办法吗?
- 在 Chrome webapps 中是否有 better/simpler 方法比 Selenium 运行 自动化测试?
我不知道发生了什么,但今天早上突然间一切正常。昨晚这个相同的代码不起作用。无论如何,如果它对任何人有帮助,这里是 chromedriver 2.5、.NET 4.5 和 .NET 的 Selenium 2.45 二进制文件的完整工作 C# 代码:
static void Main(string[] args) {
ChromeOptions options = new ChromeOptions();
options.AddArgument("test-type");
// Initialize the Chrome Driver
using(var driver = new ChromeDriver(options)) {
driver.Navigate().GoToUrl("http://localhost/test.aspx");
// Get User Name field, Password field and Login Button
var userNameField = driver.FindElementById("txtUsername");
var userPasswordField = driver.FindElementById("txtPassword");
var loginButton = driver.FindElementById("btnLogin");
// Type user name and password
userNameField.SendKeys("MyUSN");
userPasswordField.SendKeys("MyPWD");
// and click the login button
loginButton.Click();
// Take a screenshot and save it into screen.png
driver.GetScreenshot().SaveAsFile(@"F:\temp\screen.png", ImageFormat.Png);
Console.ReadLine();
}
}
注意:要为所有测试重用相同的 Chrome 浏览器 window,请创建一个静态 class 变量:
private static ChromeDriver driver;
(事实上,您可能希望将所有 class 级变量设为静态。)
然后执行类似以下操作,以便您的 ChromeDriver 句柄可以在所有测试中重复使用:
[ClassInitialize] // this only executes ONCE per test-run (not once per test!)
public static void OneTimeSetup(TestContext ctxt) {
ChromeOptions options = new ChromeOptions();
options.AddArgument("test-type");
options.AddArgument("start-maximized");
options.LeaveBrowserRunning = true;
driver = new ChromeDriver(@"C:\MyStuff", options);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(4));
}