one*_*ill 12 selenium selenium-chromedriver selenium-webdriver
我正在遇到一个异常场景,使用chromedriver.exe和一些我在Selenium帮助下编写的单元测试.当执行使用chromedriver的第一个测试时,浏览器将启动并且测试通过.
但是,对于使用chromedriver的所有以下测试,浏览器无法成功导航到URL.
浏览器即时启动字符数据; 出现在地址栏中(就像在第一个有效的测试中一样),然后将正确的URL插入地址栏.但是,页面不载入,你得到的标准Chrome 无法显示此网页提供与两个按钮的浏览器的身体/帆布消息重装和更多.
这是一个已知的问题?
我使用以下版本:
Selenium:2.41.0.0
Chromedriver.exe:2.9.0.0
Visual Studio 2013:12.0.30110.00 Update 1
我在我的ChromeTestDriver类中有以下Initialize方法,它在Setup方法(又名TestInitialize)中为所有测试调用:
ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService(DriverPath);
var chromeOptions = new ChromeOptions();
chromeDriverService.Port = DriverPort; // 9999 - this is the port for the driver, not the webpage
webDriver = new ChromeDriver(chromeDriverService, chromeOptions);
webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
webDriver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10));
Run Code Online (Sandbox Code Playgroud)
我在Cleanup方法(又名Teardown)中有以下代码用于所有测试:
TestDriver.CloseWindow();
TestDriver.Quit();
Run Code Online (Sandbox Code Playgroud)
以下异常被搞砸:
OpenQA.Selenium.NoSuchWindowException:没有这样的窗口:目标窗口已经关闭
如果我能提供更多信息,请告诉我.
编辑 我发现在Chrome发生故障之前必须先运行IE测试.通常,会发生以下情况.Chrome测试运行正常.然后运行IE测试.在此之后,所有Chrome测试都会失败.
进一步编辑 另一个不同寻常的方面是,一旦Chrome被Selenium用于网站玷污,我就再也无法在Chrome中加载网站了.也就是说,如果我在Chrome的地址栏中手动输入网址,则会显示相同的空白页面.
甚至更奇怪,如果我跑Fiddler2(基本上是代理),Chrome就会变得毫无污染.它又有效了.
我确信代理不是问题,因为我的系统没有代理,当从我的系统卸载Fiddler2时会出现相同的结果.
我的客户位于不同的大陆,这些症状也可以重现.我们使用GIT进行合作.所以它不仅限于我的系统.
Selenium Google用户小组的用户建议在非常简单的场景中使用webdriver重现错误(即不作为测试框架的一部分).这是我创建的控制台应用程序的代码:
private static string Url = "http://localhost:5556";
static void Main(string[] args)
{
var chromeWebDriver = GetChromeWebDriver();
var nav = chromeWebDriver.Navigate();
nav.GoToUrl(Url);
Thread.Sleep(3000);
chromeWebDriver.Quit();
chromeWebDriver.Dispose();
var iedriver = GetIeDriver();
var nav1 = iedriver.Navigate();
nav1.GoToUrl(Url);
iedriver.Quit();
iedriver.Dispose();
var chromeWebDriver2 = GetChromeWebDriver();
var nav2 = chromeWebDriver2.Navigate();
nav2.GoToUrl(Url);
chromeWebDriver2.FindElement(By.LinkText("Login")).Click();
System.Threading.Thread.Sleep(2000);
chromeWebDriver2.Quit();
chromeWebDriver2.Dispose();
Console.ReadLine();
}
private static IWebDriver GetIeDriver()
{
InternetExplorerDriverService internetExplorerDriverService =
InternetExplorerDriverService.CreateDefaultService(
@"H:\BW\packages\Selenium.WebDriver.IEDriver.2.41.0.1\content");
InternetExplorerOptions internetExplorerOptions = new InternetExplorerOptions();
internetExplorerDriverService.Port = 9999;
IWebDriver webdriver = new InternetExplorerDriver(internetExplorerDriverService, internetExplorerOptions);
return webdriver;
}
private static IWebDriver GetChromeWebDriver()
{
var chromeDriverService =
ChromeDriverService.CreateDefaultService(
@"H:\BW\packages\Selenium.WebDriver.ChromeDriver.2.10.0.0\content");
var chromeOptions = new ChromeOptions();
chromeDriverService.Port = 7777;
IWebDriver chromeWebDriver = new ChromeDriver(chromeDriverService, chromeOptions);
return chromeWebDriver;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18359 次 |
| 最近记录: |