51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4281|回复: 1
打印 上一主题 下一主题

selenium grid 想实现多线程启动多个chrome浏览器 碰到一个问题

[复制链接]
  • TA的每日心情
    开心
    2016-5-27 02:46
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2015-9-25 15:21:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    demo:使用junit的JUnitCore实现并发
    包括两个用例类tastcase1.java,tastcase2.java,都是用来启动chrome浏览器,还有一个使用多线程来run两个用例的类bingfa.java,用的是junit,【遇到的问题:】
    在grid两个子节点机器分别跑tastcase1、tastcase2这两个用例,即同时启动了两个浏览器并打开一个网址,启动后只有一个浏览器(节点机器A)可正常执行,另外一个浏览器(节点机器B)起来后直接挂在那里无法往下执行(url栏显示data;,如下图),实际结果就是两个用例都在一个浏览器执行了,而不是两个用例分别在两个浏览器上执行;
    x

    比较了一下节点机器A和B的selenium 执行日志,发现可以执行用例的A机器上的chromedriver的ID和无法执行用例的B机器上的chromedriver的ID 两者是相同的,从而怀疑是否是这个问题导致的。
    A:

    B:

    这个问题困扰了我好久,请问大家有没有遇到类似的问题呢?求助,第一次搞自动化测试的项目,以下是demo代码
    【testcase1】
    public class testcase1 {
            @Test
            public void run() {
            Init.OpenUrl("1");
            long id = Thread.currentThread().getId();
            System.out.println("Sample test-method 1. Thread id is: " + id);
            }
    }

    【testcase2】
    public class testcase2 {
            @Test
            public void run() {
            Init.OpenUrl("2");
            long id = Thread.currentThread().getId();
            System.out.println("Sample test-method 1. Thread id is: " + id);
            }
    }


    【Init.java】
    public class Init{
           public static WebDriver driver;
           /**
            *@param nodeChromeVersion表示node机器上两个浏览器设置的version,用来标识两个node
            */
           public void OpenUrl(String nodeChromeVersion){
                    Map<String, String> mobileEmulation = new HashMap<String, String>();
                    mobileEmulation.put("deviceName", "Google Nexus 5");
                    Map<String, Object> chromeOptions = new HashMap<String, Object>();
                    chromeOptions.put("mobileEmulation", mobileEmulation);
                    DesiredCapabilities capability = new DesiredCapabilities();
                    capability.setBrowserName("chrome");
                    capability.setVersion(nodeChromeVersion);
                    capability.setPlatform(Platform.WINDOWS);
                    capability.setCapability(ChromeOptions.CAPABILITY,chromeOptions);
                    try {
                             driver = new RemoteWebDriver(new URL("http://10.199.144.163:4444/wd/hub"), capability);
                    } catch (MalformedURLException e) {
                            e.printStackTrace();
                    }
           }
    }
    【bingfa.java】
    public class Zbingfa {
            @Test
            public void test() {
                    Class[] cls={Ztestcase1.class,Ztestcase2.class };
                     JUnitCore.runClasses(ParallelComputer.classes(), cls);  
            }
    }



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 07:39 , Processed in 0.071064 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表