对远程浏览器执行Selenium 2测试

时间:2010-10-07 23:26:09

标签: .net nunit remoting selenium-webdriver

我想要一个配置,我的构建服务器运行NUnit测试,打开并驱动远程计算机上的浏览器。什么是实现这一目标的最佳方式?

在Selenium 1中很容易做到,因为java代理服务器位于测试和浏览器之间。在Selenium 2中,您的测试直接与浏览器通信(至少在IE和Firefox中)。

这样做有好办法吗?可能有WCF服务或什么?

2 个答案:

答案 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://www.google.com/codesearch/p?hl=en#CJyJMZi8hYc/trunk/remote/client/src/csharp/webdriver-remote/RemoteWebDriver.cs

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();
    }