• 转:Selenium Grid+JAVA +Windows 配置(Selenium 2.0)


    Selenium-Grid 允许你在多台机器的多个浏览器上并行的进行测试,也就是说,你可以同时运行多个测试。本质上来说就是,Selenium-Grid 支持分布式的测试执行。它可以让你的测试在一个分布式的执行环境中运行。

    通常,以下两种情况你都会需要使用 Selenium-Grid。

    • ·        在多个浏览器中运行测试,在多个版本的浏览器中进行测试,或在不同操作系统的浏览器中进行测试。
    • ·        减少测试运行时间。

    最近新增了两台Windows机器,需要配置Selenium Grid环境,但是在网上搜到的很多都是针对1.0版本,需要安装Apache Ant等。在 2.0 中,Selenium-Grid 和Selenium-RC 服务端进行了合并。现在,你仅需要下载一个jar 包就可以获得它们。具体配置步骤如下:

    1.    1.下载 最新版本的selenium-server-standalone-*.jar,(我用的时候是2.35)官方下载地址 http://code.google.com/p/selenium/downloads/list

    2.   2.创建hub(我用的是mac环境下的IntelliJ IDEA),在terminal窗口切换到jar包所在目录,输入命令行:java -jar selenium-server-standalone-2.21.0.jar -role hub

    3.   3. 创建node(我的两台分别是WIN7 和WIN8),将前面下载的jar包分别复制到两台准备做node的机器中;在command窗口切换到jar包所在目录,输入命令行:java -jar selenium-server-standalone-2.21.0.jar -role node  -hub http://localhost:4444/grid/register(其中localhost可以换成你做hub的机器的IP地址),可以看到下图:

     Selenium <wbr>Grid+JAVA <wbr>+Windows <wbr>配置(Selenium <wbr>2.0)

    4.    4.这时在hub端浏览器中输入 http://localhost:4444/grid/console 就应该可以看到两个node的基本信息,如下图

    Selenium <wbr>Grid+JAVA <wbr>+Windows <wbr>配置(Selenium <wbr>2.0)

    点击view config还可以看到关于hub(即本机)的基本信息

    5.   5.接下来就是运行测试case了。首先要确定你的node机器上安装了你想测试的浏览器,IE是Windows默然绑定安装的,jar包里还绑定了Firefox路径信息,chrome的话问题最多。

    6.    6.先贴上关键语句

    ·         Selenium selenium = new DefaultSelenium("localhost", 4444, "*firefox","http://www.google.com");

    ·         Selenium selenium = new DefaultSelenium("localhost", 4444, "*googlechrome","http://www.google.com");

    ·         Selenium selenium = new DefaultSelenium("localhost", 4444, "*iexplore","http://www.google.com");

                  注意指定浏览器时的标示符(加粗斜体部分)!!!

    7.    7.然后就是chrome的问题了,刚开始提示错误内容如下:

    java.lang.RuntimeException: Could not start Selenium session: Failed to start new browser session: java.lang.RuntimeException: Google Chrome could not be found in the path!

    Please add the directory containing ''chrome.exe' or 'google-chrome'' to your PATH environment

    然后我就在两台主机上分别设置了环境变量path,在两台node上分别找到chrome.exe文件的位置,然后在path后添加。(注意WIN7和WIN8下位置不同),尤其是,WIN8下的chrome.exe在用户文件夹下的隐藏文件夹AppData中(C:UsersxiamaAppDataLocalGoogleChromeApplication),刚添加上错误依旧存在,在Application文件夹下直接双击chrome.exe没有反应(而在WIN7下双击是可以启动chrome的),怀疑是权限问题;然后我又在cmd窗口下分别运行了两个chrome.exe文件,chrome都启动成功!!再然后,case就可以神奇的运行了,sigh~~

    8.    8. 下面给出一个典型的测试case:

    public class GridTest extends TestCase {

     

        Selenium selenium = new DefaultSelenium("localhost", 4444, "*googlechrome", "http://www.google.cn");

     

        public GridTest()

        {

            super();    

        }

        @Before

        public void setUp(){

     

            selenium.start();

        }

        @After

        public void tearDown(){

     

              selenium.stop();

        }

     

        public void testLogin() {

     

            selenium.open("myWebsite");

            selenium.waitForPageToLoad("30000");

            selenium.type("css=form.login-form input[type=email]","tomserious");

     

     

        }

    }

    需要注意的几点:

    ·         浏览器环境是chrome

    ·         myWebsite应该换成待测试的网页IP

    ·         type的参数问题  selenium 1selenium.type("css=input#searchText", "salt");对应selenium 2WebElement element = driver.findElement(By.id("searchText")) and useelement.sendKeys("salt");

    9.9.另一种典型的的测试case

    Public class testDriverTest{

    private WebDriver driver = null;

     

        private static boolean isSupportedPlatform() {

            Platform current = Platform.getCurrent();

            return Platform.MAC.is(current) || Platform.WINDOWS.is(current);

        }

     

        @Before

        public void createDriver() {

      assumeTrue(isSupportedPlatform());

      //driver = new SafariDriver();

        DesiredCapabilities capability = DesiredCapabilities.chrome();

     //DesiredCapabilities capability = DesiredCapabilities.firefox();

    // DesiredCapabilities capability = DesiredCapabilities.safari();

    //        capability.setBrowserName("safari");

    //        capability.setPlatform(Platform.WINDOWS);

    //        capability.setVersion("5.1");

            try {

                URL url=new URL("http://localhost:4444/wd/hub");

                driver=new RemoteWebDriver(url, capability);

            }

            catch (MalformedURLException e) {

                e.printStackTrace();

                System.out.println("wrong!!!");

            }

     

        }

     

        @After

        public void quitDriver() {

            driver.quit();

        }

     

        @Test

        public void shouldBeAbleToPerformAGoogleSearch() {

           driver.get("http://www.google.com");

            driver.findElement(By.name("q")).sendKeys("webdriver");

            driver.findElement(By.name("btnG")).click();

            new WebDriverWait(driver, 3)

                    .until(ExpectedConditions.titleIs("webdriver - Google Search"));

     

        }

    }

    Tips:需要说明的是“DesiredCapabilities capability = DesiredCapabilities.chrome();”这句,刚开始会提示错误信息如下:

    The path to the chromedriver executable must be set by the webdriver.chrome.driver system property

    解决方案见https://code.google.com/p/selenium/wiki/ChromeDriver

    其实就是这里默认会去打开chromedriver.exe(不是chrome.exe!!!)文件,如果系统环境变量path中没有就会失败。去http://chromedriver.storage.googleapis.com/index.html下载最新版本的chromedriver.zip,解压缩,把chromedriver.exe的路径加入到环境变量path中即可。

    1.    关于safari的问题,参见https://code.google.com/p/selenium/wiki/SafariDriver

    2.    Selenium 跨平台跨浏览器与否的兼容性http://www.seleniumhq.org/about/platforms.jsp

    3.      iOS测试

    首先安装Xcode(版本至少为4.6),下载地址https://developer.apple.com/xcode/index.php

    其次,下载从http://code.google.com/p/selenium/source/checkout下载源码,在Xcode中运行selenium/iphone/iWebDriver.xcodeproj

    第三步,设置build为Simulator / iPhone OS 5.0,run!

    最后,在selenium下的代码关键driver=new RemoteWebDriver(new URL("http://localhost:3001/wd/hub"),DesiredCapabilities.iphone());

    selenium 工作原理 http://www.cnblogs.com/hyddd/archive/2009/05/30/1492213.html

    10.待续

    参考资料:

    1.      WIKI http://code.google.com/p/selenium/wiki/Grid2

    2.      中文文档https://github.com/fool2fish/selenium-doc/blob/master/official-site/selenium-grid.md

    3.      Selenium 2教程https://thenewcircle.com/bookshelf/selenium_tutorial/selenium2.html

    4.      http://code.google.com/p/selenium/wiki/IPhoneDriver

  • 相关阅读:
    java lambda表达式学习笔记
    一个奇妙的java坑:Long 类型的比较
    要不要冗余字段
    mysql找回密码
    mysql创建触发器
    【转】Java 8十个lambda表达式案例
    ThreadLocal类学习笔记
    mybatis generator使用总结
    【转】Java 项目UML反向工程转化工具
    PostMan做接口自动化测试
  • 原文地址:https://www.cnblogs.com/lci05/p/3922195.html
Copyright © 2020-2023  润新知