Selenium Webdriver 2.48,C#,NUnit 2.6.4,Chrome驱动程序 当我从NUnit测试运行器运行测试时,如果单独运行,它们都会通过。
如果我选择一个主标题节点,然后选择"运行",该组中的第一个测试将运行,其余测试将失败。
如果我在每次测试结束时让测试夹具[TearDown]关闭驱动程序,则会发生以下错误: "无效的OPeration异常:没有这样的会话"
如果我让测试夹具[TearDown]退出驱动程序,则会发生以下错误: "意外错误。 System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:13806 在System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure,Socket s4,Socket s6,Socket& socket,IPAddress& address,ConnectSocketState state,IAsyncResult asyncResult,Exception& exception)"
使用driver.Quit()或driver.Close()对结果没有影响 - 只有组中的第一个测试运行。
我已搜索但未能找到解决方案。必须可以通过从最顶层节点运行来运行所有测试,而不必选择每个测试并单独运行它们。任何帮助,将不胜感激。谢谢。迈克尔
这是一个在一个类中有两个测试的例子。我已经从测试中删除了大部分方法,因为它们很长。
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
using NUnit.Framework;
using SiteCore.HousingRepairsLogic;
namespace SiteCore.HousingRepairsTests.DoorsAndWindowsTests
{
[TestFixture]
class DoorsTests
{
private IWebDriver driver = new ChromeDriver(@"C:\chromedriver_win32");
[SetUp]
public void setup()
{
HousingRepairsLogic.Utilities utilities = new Utilities(driver);
utilities.NavigateToLogin();
}
[TearDown]
public void teardown()
{
Utilities utilities = new Utilities(driver);
utilities.CloseDriver();
}
[Test]
public void LockRepair()
{
//Create Instance of the HomePage class
HomePage homepage = new HomePage(driver);
homepage.ClickHousingButton();
homepage.RequestRepairButton();
homepage.RequestRepairNowButton();
}
[Test]
public void ExternalWoodDoorFrameDamaged()
{
//Create Instance of the HomePage class
HomePage homepage = new HomePage(driver);
homepage.ClickHousingButton();
homepage.RequestRepairButton();
homepage.RequestRepairNowButton();
//Create instance of TenancyPage class
TenancyPage tenancy = new TenancyPage(driver);
//proceed with login
tenancy.ClickYesLoginButton();
//enter username
tenancy.EnterMyeAccountUserName();
//enter password
tenancy.EnterMyeAccountPassword();
//click the login button
tenancy.ClickLoginButton();
}
}
答案 0 :(得分:0)
在夹具中初始化驱动程序一次,当它被声明时:
私人IWebDriver驱动程序=新ChromeDriver(@“C:\ chromedriver_win32”);
然后你的第一个测试运行,使用驱动程序,拆卸将其关闭。下一个测试不再使用驱动程序。 您需要:在设置中重新初始化驱动程序,或者需要在夹具拆解中关闭它。
如果您选择在setup / teardown中初始化和关闭,您将看到驱动程序为每个测试启动一个新的browsersession。这将确保您的测试独立于彼此,但它将花费更多的运行时间。
如果要对所有测试重新使用browsersession:将初始化和闭包移动到TestFixture Setup和TestFixture Teardown方法。