我目前正在使用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测试的最佳框架是什么? 非常感谢您的帮助, 约翰
答案 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”。