在Selenium Grid中设置IE6(和多个浏览器)

时间:2009-12-22 04:42:17

标签: selenium selenium-rc selenium-grid

我很难尝试掌握selenium Grid / RC的一些概念。我需要的是为测试提供特定的环境(即6-on-xp,即7-on-xp等)。对于我一直在阅读的内容,grid_configuration.yml中的浏览器行没有提及我正在运行的MSIEFirefox的版本。所以我无法理解我能告诉Grid / RC哪种形式我想要一些特定的浏览器和运行它们的路径(RC如何知道运行哪个exe?)

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

2 个答案:

答案 0 :(得分:6)

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

  

我需要的是提供具体的   环境(即6-on-xp,即7-on-xp,   等)测试。

好吧,因为你不能在同一台机器上安装多个IE实例,我知道有些应用程序允许你这样做,但根据我的经验,它们会导致比解决它们更多的问题。理想情况下,您需要不同的计算机来运行测试。通过这样做,您还可以为您的开发人员设置一个selenium场,因为他们可以在特定实例上定位测试。因此,将Grid设置为基础架构是一个很好的步骤。

  

对于我一直在阅读的内容,   grid_configuration.yml中的浏览器行   不要参考什么   我是MSIE或Firefox的版本   运行。所以我无法理解   在哪种形式我可以告诉Grid / RC   我想要一些特定的浏览器和   运行它们的路径(RC如何知道哪个   exe运行?)

YAML只是让你知道网格可以处理什么。启动网格时,您需要确保传入类似的配置。想想Se:GRID就像你会Se:RC一样,除非你不关心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中,您可以在所有测试中包含的模块中创建一个数组

<强> include.py

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

<强> test.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,这样如果出现故障,它更容易找到它的位置以及特定的浏览器。

答案 1 :(得分:1)

虚拟机可以非常方便地在Selenium Grid服务器场中设置“便宜”的骡子。