我想要一个配置,让我的构建服务器运行一个 NUnit 测试,该测试在远程机器上打开并驱动浏览器。实现这一目标的最佳方法是什么?
这在 Selenium 1 中很容易做到,因为 java 代理服务器位于您的测试和浏览器之间。在 Selenium 2 中,您的测试直接与浏览器通信(至少在 IE 和 Firefox 中)。
有没有好的方法来做到这一点?可能有 WCF 服务之类的?
我想要一个配置,让我的构建服务器运行一个 NUnit 测试,该测试在远程机器上打开并驱动浏览器。实现这一目标的最佳方法是什么?
这在 Selenium 1 中很容易做到,因为 java 代理服务器位于您的测试和浏览器之间。在 Selenium 2 中,您的测试直接与浏览器通信(至少在 IE 和 Firefox 中)。
有没有好的方法来做到这一点?可能有 WCF 服务之类的?
您需要从http://code.google.com/p/selenium/获取独立的 Selenium 服务器(当前是 selenium-server-standalone-2.0a6.jar) 。然后从远程机器上的命令行开始(你需要在那里安装 Java):
java -jar selenium-server-standalone-2.0a6.jar
还有一个服务器的 .NET 实现,但它的版本落后于 Java 版本
然后你应该使用RemoteWebDriver
:
IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4444/wd/hub"),DesiredCapabilities.InternetExplorer());
然后像在“本地”测试中一样使用驱动程序
更多信息:
http://code.google.com/p/selenium/wiki/RemoteWebDriver
http://code.google.com/p/selenium/wiki/RemoteWebDriverServer
下面的链接中列出了执行此操作的 C# 示例。Firefox 的驱动程序文件内置有 selenium 服务器 jar,需要在远程机器上运行。但是 chrome 驱动程序和 Internet Explorer 驱动程序位置需要在启动时使用选项 -Dwebdriver.ie.driver 和 -DWebdriver.chrome.driver 传递给服务器
有关更多详细信息,请参阅此链接 如何在 C# 中使用远程 webdriver 调用/运行不同类型的 web 驱动程序浏览器
基本代码如下所示
[Test]
public void Test_OpeningHomePageUsingIE()
{
// Step b - Initiating webdriver
IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4444/wd/hub"), DesiredCapabilities.InternetExplorer());
//Step c : Making driver to navigate
driver.Navigate().GoToUrl("http://docs.seleniumhq.org/");
//Step d
IWebElement myLink = driver.FindElement(By.LinkText("Download"));
myLink.Click();
//Step e
driver.Quit();
}