【问题标题】:Running Selenium IDE tests via Selenium Grid通过 Selenium Grid 运行 Selenium IDE 测试
【发布时间】:2012-04-28 00:50:59
【问题描述】:

首先我应该说我是一个遗憾和痛苦的noob。但我正在努力改变这一点!!我不懂任何编程语言,但通过进行足够的研究以完成我曾经需要完成的任何工作,我设法“让事情发生”。

无论如何,我一直在使用 Selenium IDE 创建 Selenium 测试,但在通过 Selenium Grid 运行这些测试时遇到了一些麻烦。

我一直将测试导出为 JUnit 4 (Webdriver) 文件。我在 Ubuntu 无头服务器上运行网格,我的远程控制在一台运行 IE9 和 Firefox 的 Windows 7 机器上,以及一台运行 IE8 和 Chrome 的 Windows Vista 机器上。

我的目标是将我从 Selenium IDE 导出的测试作为 JUnit 4 (Webdriver) 文件,并在我的两台 Windows 机器上从网格中并行运行它们。我已经在我的 Windows 机器上编辑了我的主机文件,以通过名称“seleniumgrid”识别 Ubuntu 服务器。例如:

在 Ubuntu 服务器终端 1 上: 蚂蚁发射中心

Win7终端1: ant -Dport=5555 -Denvironment="IE9 on Windows" -Dhost=Win7 -DhubURL=http://seleniumgrid:4444 launch-remote-control

Win7终端2: ant -Dport=5555 -Denvironment="Firefox on Windows" -Dhost=Win7 -DhubURL=http://seleniumgrid:4444 launch-remote-control

Vista 终端1: ant -Dport=5555 -Denvironment="IE8 on Windows" -Dhost=WinVista -DhubURL=http://seleniumgrid:4444 launch-remote-control

Vista 终端 2: ant -Dport=5555 -Denvironment="Chrome on Windows" -Dhost=WinVista -DhubURL=http://seleniumgrid:4444 launch-remote-control

现在,我正在尝试启动从 Selenium IDE 导出的 JUnit4 (webdriver) 文件以运行此配置。文件名称为:Registration.java。

我现在必须做什么才能运行 Registration.jar 文件?我似乎找不到任何可以回答这个问题的文档,这让我相信我对这一切是如何工作的有一个根本的误解......

如果这个问题之前已经回答过,请见谅。当谈到这些东西时,我的术语很糟糕。

非常感谢您花时间阅读本文,如果有答案,更感谢您。

-布兰登

【问题讨论】:

    标签: selenium selenium-rc selenium-ide selenium-grid


    【解决方案1】:

    不需要通过ant启动hub和nodes。您可以从 cmd 运行它们:

    java -jar selenium-server-standalone-2.21.0.jar -role hub -- 将运行集线器
    java -jar selenium-server-standalone-2.21.0.jar -role node -hub http://seleniumgrid:4444/grid/register -- 将运行节点

    节点的默认端口是 5555,因此对于第二个终端,您应该指定与默认端口不同的端口,例如5556:

    java -jar selenium-server-standalone-2.21.0.jar -role node -port 5556 -hub http://seleniumgrid:4444/grid/register

    您还应该为每个节点指定浏览器参数,例如:

    -browser browserName=firefox,maxInstances=5,platform=WINDOWS

    在您的 JUnit 测试中,您应该使用 RemoteWebDriverDesiredCapabilities

    DesiredCapabilities capability = DesiredCapabilities.firefox();
    WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
    

    对于并行执行,你应该另外编辑你的测试(对不起,不要使用 jUnit,所以除了你可以在下面找到的链接之外,这里帮不上什么忙。)

    在 Linux 机器上的类路径中包含 JUnit 类文件、您的类文件,包括您的 JUnit 测试类、类文件所依赖的库:

    export CLASSPATH=$JUNIT_HOME/junit.jar:/myproject/classes:/myproject/lib/something.jar
    

    在 Linux 机器上调用 Junit 命令:

     java org.junit.runner.JUnitCore [test class name]
    

    或者您也可以使用ant

    我会建议在 Linux 上使用集线器开始,在 Windows 上使用一个浏览器的一个节点,无需任何并行化,因此您将确保这部分工作正常。下一步依次运行两个节点的测试,然后尝试并行运行它们。

    如需完整教程,请阅读以下材料:How do I run JUnit using AntActivating Junit tests from Command LineGrid2 tutorialParallel JUnit 4 and Selenium(三部分)

    【讨论】:

    • 感谢您的回复,阿莱!感谢您抽出宝贵的时间。我听说在部署并行测试时 JUnit 存在一些问题,并且被告知 TestNG 实际上更适合这项任务。任何人都可以确认或否认这一点吗?
    • @btdeviant,是的,我同意了。当我调查与 NUnit 并行运行测试时,我在 * 和 Internet 上的某个地方看到了 TestNG 解决方案,但没有遇到好的 jUnit 解决方案。
    • @btdeviant 据我所知,旧版本的 selenium 网格应该包含某种基于 TestNG 的并行测试执行演示
    • 优秀。谢谢你。然后我将研究TestNG。等待更多“菜鸟”问题!再次感谢您,先生:D
    • 好的。我已经启动并运行了网格 2。我仍然想知道我是如何运行从 Selenium IDE 导出的测试以在网格上运行的。假设我从 Selenium IDE 导出为 TestNG 的文件的标题是:Registration.java。我启动了我的 linux 机器上的集线器,我的 windows 机器上的一个节点。怎么办?我如何实际运行测试?我是否必须修改/创建 .xml 文件?我被卡住了:(感谢所有的帮助!
    最近更新 更多