如何在多台远程计算机上并行运行Selenium Webdriver C#测试?

时间:2013-08-13 16:08:59

标签: c# nunit selenium-webdriver remotewebdriver

我目前正在使用Selenium Webdriver并使用C#在Visual Studio 2012中开发我的测试。我使用以下代码成功执行了远程测试:

public static void Test_RemoteWebDriver()
       {
        string url = "http://11.11.11.11:4444/wd/hub";

        DesiredCapabilities ieCapibility = DesiredCapabilities.InternetExplorer();
        ieCapibility.SetCapability("ignoreProtectedModeSettings", true);
        IWebDriver driver = new RemoteWebDriver(new Uri(url), ieCapibility);
        driver.Navigate().GoToUrl("http://www.google.com/");           
        driver.Quit();
       }

我现在要做的是使用一台机器作为自动化控制器,并在多台远程机器上执行测试。为了澄清,我希望在我的控制器机器上安装Selenium代码,但能够在多台远程机器上运行测试。我该怎么做呢? 我也在使用NUnit来运行测试,但我知道这可能不是并行测试的最佳解决方案。运行远程Selenium测试的最佳框架是什么? 非常感谢您的帮助, 约翰

2 个答案:

答案 0 :(得分:2)

已经有一段时间了,所以这就是我最终做的事情。我最终使用NUnit来运行测试。现在,我的自动化将NUnit和Selenium文件复制到远程计算机,在那里运行自动化并将结果文件复制回控制器计算机。适合我的需求。 约翰

答案 1 :(得分:0)

我做了什么,我不确定这是否是最佳方法,是在appsettings部分的app.config中为每个要测试的服务器添加一个条目,如下所示:

 <!-- Server URLs to test  -->    
<add key="ApplicationUrl_DEV" value="http://localhost:44404"/>
<add key="ApplicationUrl_TEST" value="http://testserver:44404"/> 

然后在测试类中,我将属性添加为:

[TestFixture("ApplicationUrl_DEV", "DEV")]
[TestFixture("ApplicationUrl_TEST", "TEST")]
public abstract class Executer // Test class

类中的每个测试方法将执行N次,每个'TestFixture'属性执行一次。 在此之后,您必须重载类构造函数:

protected Executer(string urlKey, string environment)
{
     BaseUrl = ConfigurationManager.AppSettings[urlKey];
     Environment = environment;
}

在这种情况下,urlKey是当前TestAttribute的第一个值,而环境是第二个值。 所以,有了这个,我得到了当前服务器的URL,并将其用作我的基本URL:

BaseUrl = ConfigurationManager.AppSettings[urlKey];
Environment = environment;
用于记录目的的

和“Environment”。