Selenium FireFox 无法完全启动
Selenium FireFox will not fully start up
当试图创建一个新的 FirFoxDriver() 时,一个新的 window 被启动但从未完全加载。这是我的代码片段。我有这样的框架设置。每个网页都是它自己的文件,基本网页。每组页面测试都是它自己的文件,基本测试页面。
TestFixture 和 TestFixtureSetup 以及实际测试文件上的设置。
[TestFixture("FireFox")]
public class LoginPageTests : BaseSeleniumTest
{
public readonly string _TestDriver;
private LoginPage _LoginPage;
private Users _Users;
private HomePage _HomePage;
public LoginPageTests(string driverToUse) { _TestDriver = driverToUse; }
[TestFixtureSetUp]
public override void TestFixtureSetUp()
{
base.DriverSetUp(_TestDriver);
_Users = new Users(Credentials.bleonard);
}
[SetUp]
public void Setup()
{
_LoginPage = new LoginPage(Driver);
}
基础测试页面:
public abstract class BaseSeleniumTest
{
protected IWebDriver Driver;
protected Stopwatch SeleniumStopwatch = Stopwatch.StartNew();
protected BaseSeleniumTest()
{
SeleniumStopwatch = Stopwatch.StartNew();
}
public static IWebDriver GetDriver(string driverToUse)
{
IWebDriver w;
Trace.Write("Newing up driver...");
switch (driverToUse)
{
case "InternetExplorer":
w = new InternetExplorerDriver(@"C:\cst-bitbucket\Selenium\Cst.Selenium.Tests");
w.Manage().Window.Maximize();
break;
case "Chrome":
ChromeOptions options = new ChromeOptions();
options.AddArgument("test-type");
options.AddArgument("start-maximized");
w = new ChromeDriver(@"C:\cst-bitbucket\Selenium\Cst.Selenium.Tests", options);
break;
case "FireFox":
w = new FirefoxDriver();
w.Manage().Window.Maximize();
break;
default:
w = new FirefoxDriver();
w.Manage().Window.Maximize();
break;
}
w.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(3));
return w;
}
public virtual void DriverSetUp(string driverToUse)
{
try
{
if (Driver == null)
{
Driver = GetDriver(driverToUse);
}
else
{
Driver.Quit();
Driver = GetDriver(driverToUse);
}
Driver.Manage().Cookies.DeleteAllCookies();
}
catch (Exception ex)
{
Assert.Inconclusive(TestResultReporter.AssertError = "Failed while getting web driver!" + ex);
}
}
调试时,happens.The base.DriverSetup(_TestDrive) 在 BaseTestPage 上被调用。由于该页面上的 Driver 为空,因此它会触发 GetDriver 方法,该方法采用 FireFox 的 driverToUse。 GetDrive 将移动到 switch case "FireFox",并触发新的 FirfoxDriver()。加载一个新的 window 但永远不会进入主页或任何内容。它挂在那条线上,输出显示 multiple
A first chance exception of type 'System.Net.Sockets.SocketException'
occurred in System.dll
然后在DriverSetUp
方法中抛出catch语句,最后输出错误:
A first chance exception of type 'OpenQA.Selenium.WebDriverException'
occurred in WebDriver.dll
给出。任何帮助都会很棒,我已经为此工作了好几天了。
症状类似于我在使用 selenium
2.44 和 Firefox
35 或更高版本时看到的情况 - 存在兼容性问题:
作为解决方法,将 Firefox 降级到 34.0.5。
要解决我的问题,请先尝试将 Selenium 更新到 2.45。 Webdriver 和支持所有语言的版本是 2015 年 2 月 27 日。确保您完全关闭 Visual Studio 并重新启动,这样一切就干净了。如果这不起作用,您需要降级到 FireFox 34.0.5。此时 FireFoxWebDriver 启动正常。
当试图创建一个新的 FirFoxDriver() 时,一个新的 window 被启动但从未完全加载。这是我的代码片段。我有这样的框架设置。每个网页都是它自己的文件,基本网页。每组页面测试都是它自己的文件,基本测试页面。
TestFixture 和 TestFixtureSetup 以及实际测试文件上的设置。
[TestFixture("FireFox")]
public class LoginPageTests : BaseSeleniumTest
{
public readonly string _TestDriver;
private LoginPage _LoginPage;
private Users _Users;
private HomePage _HomePage;
public LoginPageTests(string driverToUse) { _TestDriver = driverToUse; }
[TestFixtureSetUp]
public override void TestFixtureSetUp()
{
base.DriverSetUp(_TestDriver);
_Users = new Users(Credentials.bleonard);
}
[SetUp]
public void Setup()
{
_LoginPage = new LoginPage(Driver);
}
基础测试页面:
public abstract class BaseSeleniumTest
{
protected IWebDriver Driver;
protected Stopwatch SeleniumStopwatch = Stopwatch.StartNew();
protected BaseSeleniumTest()
{
SeleniumStopwatch = Stopwatch.StartNew();
}
public static IWebDriver GetDriver(string driverToUse)
{
IWebDriver w;
Trace.Write("Newing up driver...");
switch (driverToUse)
{
case "InternetExplorer":
w = new InternetExplorerDriver(@"C:\cst-bitbucket\Selenium\Cst.Selenium.Tests");
w.Manage().Window.Maximize();
break;
case "Chrome":
ChromeOptions options = new ChromeOptions();
options.AddArgument("test-type");
options.AddArgument("start-maximized");
w = new ChromeDriver(@"C:\cst-bitbucket\Selenium\Cst.Selenium.Tests", options);
break;
case "FireFox":
w = new FirefoxDriver();
w.Manage().Window.Maximize();
break;
default:
w = new FirefoxDriver();
w.Manage().Window.Maximize();
break;
}
w.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(3));
return w;
}
public virtual void DriverSetUp(string driverToUse)
{
try
{
if (Driver == null)
{
Driver = GetDriver(driverToUse);
}
else
{
Driver.Quit();
Driver = GetDriver(driverToUse);
}
Driver.Manage().Cookies.DeleteAllCookies();
}
catch (Exception ex)
{
Assert.Inconclusive(TestResultReporter.AssertError = "Failed while getting web driver!" + ex);
}
}
调试时,happens.The base.DriverSetup(_TestDrive) 在 BaseTestPage 上被调用。由于该页面上的 Driver 为空,因此它会触发 GetDriver 方法,该方法采用 FireFox 的 driverToUse。 GetDrive 将移动到 switch case "FireFox",并触发新的 FirfoxDriver()。加载一个新的 window 但永远不会进入主页或任何内容。它挂在那条线上,输出显示 multiple
A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
然后在DriverSetUp
方法中抛出catch语句,最后输出错误:
A first chance exception of type 'OpenQA.Selenium.WebDriverException' occurred in WebDriver.dll
给出。任何帮助都会很棒,我已经为此工作了好几天了。
症状类似于我在使用 selenium
2.44 和 Firefox
35 或更高版本时看到的情况 - 存在兼容性问题:
作为解决方法,将 Firefox 降级到 34.0.5。
要解决我的问题,请先尝试将 Selenium 更新到 2.45。 Webdriver 和支持所有语言的版本是 2015 年 2 月 27 日。确保您完全关闭 Visual Studio 并重新启动,这样一切就干净了。如果这不起作用,您需要降级到 FireFox 34.0.5。此时 FireFoxWebDriver 启动正常。