我想要一个配置,我的构建服务器运行NUnit测试,打开并驱动远程计算机上的浏览器。什么是实现这一目标的最佳方式?
在Selenium 1中很容易做到,因为java代理服务器位于测试和浏览器之间。在Selenium 2中,您的测试直接与浏览器通信(至少在IE和Firefox中)。
这样做有好办法吗?可能有WCF服务或什么?
答案 0 :(得分:6)
您需要从http://code.google.com/p/selenium/获取独立Selenium服务器(当前是selenium-server-standalone-2.0a6.jar)。然后使用远程计算机上的命令行启动(您需要在那里安装Java):
java -jar selenium-server-standalone-2.0a6.jar
还有一个.NET implementation of the server,但它的版本落后于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
答案 1 :(得分:2)
这样做的C#示例在下面的链接中列出。 firefox的驱动程序文件内置了需要在远程计算机上运行的selenium服务器jar。但是Chrome驱动程序和Internet Explorer驱动程序位置需要在启动时使用选项-Dwebdriver.ie.driver和-DWebdriver.chrome.driver传递给服务器
有关详细信息,请参阅此链接 How to invoke/run different type of web driver browser using remote webdriver in C#
基本代码如下所示
[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();
}