3

我很难掌握一些关于 selenium Grid/RC 的概念。我需要为测试提供特定的环境(ie6-on-xp、ie7-on-xp 等)。对于我一直在阅读的内容,浏览器行中grid_configuration.yml没有提及我正在运行MSIE的版本。Firefox所以我无法弄清楚我可以以哪种形式告诉 Grid/RC 我想要一些特定的浏览器以及运行它们的路径(RC 如何知道要运行哪个 exe?)

其次,我想运行这些浏览器的便携版本。我只看到在测试中指定的,而不是在 RC 的命令行中运行它们。每次测试,这就是这样做的方法吗?

4

2 回答 2

6

我将通过分解您需要的信息来回答您的问题

我需要为测试提供特定的环境(ie6-on-xp、ie7-on-xp 等)。

好吧,既然你不能在同一台机器上拥有多个 IE 实例,我知道有一些应用程序可以让你这样做,但根据我的经验,它们会导致比解决问题更多的问题。理想情况下,您希望不同的机器运行测试。通过这样做,您还为您的开发人员设置了一个硒农场,因为他们可以针对特定实例进行测试。因此,将网格设置为基础设施是一个很好的步骤。

对于我一直在阅读的内容,grid_configuration.yml 中的浏览器行没有提及我正在运行的 MSIE 或 Firefox 版本。所以我无法弄清楚我可以以哪种形式告诉 Grid/RC 我想要一些特定的浏览器以及运行它们的路径(RC 如何知道要运行哪个 exe?)

YAML 只是让您知道网格可以处理什么。启动网格时,您需要确保传入类似的配置。像 Se:RC 一样考虑 Se:GRID,只是你不关心 RC 服务器在哪里,因为你与一个为你解决其余问题的中心位置对话。

如果您需要它来针对特定项目运行测试,那么您需要在测试设置中处理此问题。有一个普遍的误解,即所有测试在每个浏览器中都运行相同。如果您在测试中从不依赖 XPath 或 CSS 选择器,就会发生这种情况,因为浏览器处理这种情况的方式总是略有不同,而这些细微的差异可能会导致测试不稳定,而应该始终避免这种情况。

指定用于测试的浏览器的一种方法是拥有一个中央配置文件。在 C# 中,这将使用 app.config 为每个浏览器提供一个集合并执行

配置

<Firefox>
 <addKey browserVersion='3.5.6' OS='WindowsXP'>
</Firefox>

中央配置类 查看 1 个元素

 public class BoothElement : ConfigurationElement
    {
        [ConfigurationProperty("browserVersion", DefaultValue = "", IsKey = true, IsRequired = true)]
        public string browserVersion
        {
            get
            {
                return ((string)(base["browserVersion"]));
            }
            set
            {
                base["browserVersion"] = value;

            }
        }

测试

selenium = new DefaultSelenium(HubPort, HubPort, browserVersion, SUTServer);
selenium.Open("/test.htm");
//Rest of the test

在 python 中,您可以在包含在所有测试中的模块中创建一个数组

包括.py

hubServer = 'hub'
hubPort = 5555
sut = 'http://serverUnderTest'
firefox = [hubServer,hubPort,"\*chrome",sut]
iexplore = [hubServer,hubPort,"\*iehta",sut]

测试.py

sel = selenium(firefox)
sel.open("/test.html")
#rest of the test

在使用 Selenium Grid 时,请尝试将其更多地视为测试基础设施帮助框架,希望这对您有所帮助。

其次,我想运行这些浏览器的便携版本。我只看到在测试中指定的,而不是在 RC 的命令行中运行它们。每次测试,这就是这样做的方法吗?

我从未尝试过让 Selenium 在移动浏览器上工作,并且认为它不会很好地工作,但是使用目前处于 alpha 的 Selenium 2 有 android 支持来测试应用程序。

从评论中编辑

   - name:    "Firefox on OS X"
     browser: "*firefox"
   - name:    "Firefox on Linux"
     browser: "*firefox"
   - name:    "IE on Windows"
     browser: "*iehta"
   - name:    "Safari on OS X"
     browser: "*safari"

假设我们有上述设置,根据 YAML 文件,我们有许多不同的 *firefox 实例。所以在我们的测试中调用这些不同的,我们的浏览器设置命令看起来像

selenium.Start(hubHost, hubPort, "Firefox on Linux", "http://serverUnderTest"); 或者selenium.Start(hubHost, hubPort, "Firefox on OS X", "http://serverUnderTest");

集线器将为您将其翻译成 *firefox。我更喜欢为我的环境使用非常细化的名称,而不是通常的 *firefox,这样如果出现故障,更容易发现它在哪里以及在哪个特定浏览器上。

于 2009-12-22T14:17:05.920 回答
1

虚拟机可以非常方便地在 Selenium Grid 农场中设置“廉价”的 mules。

于 2009-12-31T02:46:15.273 回答