<menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
  • <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
              1. <dl id="gc5xj"></dl>

                <dl id="gc5xj"></dl>

                <li id="gc5xj"><ins id="gc5xj"></ins></li>

                1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                    <dl id="gc5xj"></dl>

                        <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                        <dl id="gc5xj"></dl>

                          Selenium Grid2分布式自动化测试环境搭建

                          发表于:2017-11-28 11:20  作者:Blue·Sky   ?#19995;矗?#21338;客园

                          字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: Selenium 分布式测试 自动化测试工具

                            一、Selenium Server 环境配置
                            1、selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不用的浏览器,不同的操作系统测试,而且比较多的case需要多线程远程执行,那么一个比较好的测试方案就是使用 selenium grid,hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。
                            其结构组成:
                            2、下载 Selenium Server
                            下载地址:http://www.seleniumhq.org/download/
                            根据环境中selenium版本号,选择?#26434;?#29256;本的selenium-server-standalone-xxx.jar。
                            由于运行jar需要有?#26434;?#30340;java环境,所以前提是要有java环境,在此略过java环境的大家。
                            3、运行selenium server
                            通过命令行,切换到selenium server目录下,执行 java -jar selenium-server-standalone-xxx.jar。即可执行该jar包。
                            二、Selenium Grid 工作原理
                            Grid 是用于设计帮助我们进行分布式测试的工具,其整个结构有一个hub主节点和若干个node代理节点组成。hub用来管理各个子节点的注册和状态信息,并接收远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。使用Grid远程执行测试的代码与直接调用Selenium Server是一样的,只是环境启动的方式不一样,需要同时启动一个hub和至少一个node。
                            #启动主节点
                            java -jar selenium-server-standalone-xxx.jar -role hub
                            #启动代理节点
                            java -jar selenium-server-standalone-xxx.jar -role node
                            上面的代码分别启动了一个hub 和 一个node ,hub默认端口:4444,node默认端口为5555,若是同一台主机上启动多个node,则需要注意指定端口号,可以通过下面的方式来启动多个node节点。
                            #启动多个代理节点
                            java -jar selenium-server-standalone-xxx.jar -role node - port 5555
                            java -jar selenium-server-standalone-xxx.jar -role node - port 5556
                            java -jar selenium-server-standalone-xxx.jar -role node - port 5557
                            使用场景:当测试用例需要验证的环境比较多时,可以并行执行这些测试用例,从而缩短测试总耗时。并行的能力需要借助编程语言的多线程技术,后续会介绍Python的多线程技术,Grid 可以根据用例中指定的平台配置信息把用例转发给符合匹配要求的测试代理。
                            例如,用例中指定了要在Windows7上用firefox浏览器进行测试,那么Grid会自动匹配注册信息为Windows7且安装了firefox的代理节点,如果匹配成功,则转发测试请求,如果匹配失败则拒绝请求。调用基本结构图如下所示。
                            一台计算机上可以启动一个hub或多个node节点。
                            如下图一个主机上启动了一个hub和两个node分支节点。
                            可以通过浏览器访问Grid的控制台:http://127.0.0.1:4444/grid/console 。
                            通过控制条查看启动的节点信息。
                            三、Remote应用
                            1、Remote实例
                            1.1、首先启动 Selenium Server
                            java -jar selenium-server-standalone-2.48.2.jar
                            1.2、编写自动化测试脚本。
                          #-*-coding:utf-8-*-
                          #Time:2017/8/24 23:33
                          #Author:YangYangJun
                          from selenium import selenium
                          from selenium.webdriver import  Remote
                          import time
                          driver = Remote(command_executor='http://localhost:4444/wd/hub',
                          desired_capabilities={'platform':'ANY',
                          'browserName':'firefox',
                          'version':'',
                          'javascriptEnabled':True})
                          driver.get('http://www.baidu.com')
                          driver.find_element_by_id('kw').send_keys('remote')
                          driver.find_element_by_id('su').click()
                          time.sleep(5)
                          driver.quit()
                            ?#30001;?#38754;的代码可以看出,Remote()方法配置来看,相当于直接使用了webdriver.Firefox(),但是Remote()却大大增加了配置的灵活性。
                            DesiredCapabilities 品台及浏览器的?#38382;?#22914;下:
                          FireFox = {'platform':'ANY', 'browserName':'firefox', 'version':'', 'javascriptEnabled':True, 'marionette':False }
                          Chrome = {'platform':'ANY', 'browserName':'chrome', 'version':'', 'javascriptEnabled':True }
                          Opera= {'platform':'ANY', 'browserName':'opera', 'version':'', 'javascriptEnabled':True }
                          Iphone= {'platform':'MAC', 'browserName':'iPhone', 'version':'', 'javascriptEnabled':True }
                          Android  = {'platform':'ANDROID', 'browserName':'android', 'version':'', 'javascriptEnabled':True }
                            四、?#38382;?#21270;平台及浏览器
                            1、启动本地node
                            实例如下?#21512;却?#24314;list 字典,定义不同的主机ip,端口号及浏览器。然后,通过for循环读取lists字典中的数据作为Remote()的配置信息,从而使脚本在不同的节点及浏览器下执行。
                          #-*-coding:utf-8-*-
                          # Time:2017/9/18 23:37
                          # Author:YangYangJun
                          from selenium import selenium
                          from selenium.webdriver import  Remote
                          import time
                          lists = {'http://localhost:4444/wd/hub':'chrome',
                          'http://localhost:5555/wd/hub':'firefox'}
                          for host,browser in lists.items():
                          print (host,browser)
                          driver = Remote(command_executor=host,
                          desired_capabilities={'platform': 'ANY',
                          'browserName': browser,
                          'version': '',
                          'javascriptEnabled': True})
                          driver.get('http://www.baidu.com')
                          driver.find_element_by_id('kw').send_keys('remote')
                          driver.find_element_by_id('su').click()
                          time.sleep(5)
                          driver.quit()
                            2、启动远程node
                            2.1、前置条件:
                            2.1.1、本地hub主机与远程node主机之间可以用ping命令连通。
                            2.1.2、远程主机必须安装用例执行的浏览器驱动,并且驱动要放到环境变量path的目录下。
                            2.1.3、远程主机必须安装java环境,因为需要运行Selenium  Server。
                            2.2、操作步骤:
                            2.2.1、启动本地hub主机,查看主机ip
                            java -jar selenium-server-standalone-2.48.2.jar -role hub
                            2.2.2、启动远程主机,查看ip
                            java -jar selenium-server-standalone-2.48.2.jar -role node -port 5555 -hub http://hup主机ip:4444/grid/register
                            lists = {'http://localhost:4444/wd/hub':'chrome',
                            'http://node主机ip:5555/wd/hub':'firefox'}
                            五、知识拓展
                            1、创建startup.bat文件
                            在启动Selenium Server时,?#30475;?#37117;要输入一长串命令,非常麻?#24120;?#21487;以启动命令生成批处理文件,方法很简单。首先创建一个startup.bat文件。
                            如下图:
                            2、另外我们还可以通过VisGrid工具来启动和管理节点,如下图:
                            3、开机自启动startup.bat
                            ?#26434;?#20998;布式测试远程主机,如果?#30475;?#27979;试前都要人为启动startup.bat,还是太复杂了。所以想到了开机自启动,首相想到的是做成service,结果没有实现成功。
                            后选择了开机自启动。
                            操作步骤如下。
                            3.1、添加启动快捷方式,通过程序->启动,单击右键,打开所有用户
                            将快捷方式?#31243;?#21040;该路径下。
                            3.2、通过运行执行msconfig,打开系统配置
                            然后勾选所要启动的程序,点击全部启动即可。至此,?#30475;?#24320;机后,系统会自动执行startup.bat。缺点是?#30475;?#37117;会弹出一个命令行窗口。
                            六、使用过?#22363;?#36935;到的问题
                            1、驱动没有添加到环境变量中。
                            2、配置了环境变量,但是仍然报错。如下图
                            产生原因:参照了网上 java -jar selenium.jar -role node -port 6666 -hub http://192.168.1.132:4444/grid/register -Dwebdriver.firefox.driver=firefox.exe  -browser browserName=firefox 这?#20013;?#27861;。其实这?#20013;?#27861;?#26434;趂irefox?#34892;?#22810;余。
                            直接这样写就行: java -jar selenium.jar -role node -port 6666 -hub http://192.168.1.132:4444/grid/register
                            3、chrome 浏览器启动报错。
                            同样是这?#20013;?#27861;:java -jar selenium.jar -role node -port 6666 -hub http://192.168.1.132:4444/grid/register -Dwebdriver.chrome.driver=chromedriver.exe  -browser browserName=chrome
                            ?#19988;?#20026;没有在该路径下添加 chromedriver驱动。
                            解决办法
                            (1)、在该路径下添加chromedriver即可。
                            (2)、使用另一?#20013;?#27861;:java -jar selenium.jar -role node -port 6666 -hub http://192.168.1.132:4444/grid/register

                          ?#23601;?#33616;】JMeter接口自动化与性能测试案例实践

                          评 论

                          • zhang1987yuan (2017-11-29 08:34:28)

                            不谈工具,只谈思想,web从过去?#36739;?#22312;,多系统,多浏览器测试越发重要。分布式测试是必然。

                          论坛新帖

                          顶部 底部


                          建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
                          版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2019, 沪ICP备05003035号
                          ?#31471;?#21450;意见反馈:[email protected]; 业务联系:[email protected] 021-64471599-8017

                          沪公网安备 31010102002173号

                          51Testing官方微信

                          51Testing官方微博

                          扫一扫 测试知识全知道

                          <menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
                        1. <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                    1. <dl id="gc5xj"></dl>

                                      <dl id="gc5xj"></dl>

                                      <li id="gc5xj"><ins id="gc5xj"></ins></li>

                                      1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                          <dl id="gc5xj"></dl>

                                              <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                                              <dl id="gc5xj"></dl>

                                                黑龙江快乐10分软件
                                                <menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
                                              1. <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                          1. <dl id="gc5xj"></dl>

                                                            <dl id="gc5xj"></dl>

                                                            <li id="gc5xj"><ins id="gc5xj"></ins></li>

                                                            1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                                <dl id="gc5xj"></dl>

                                                                    <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                                                                    <dl id="gc5xj"></dl>

                                                                      <menuitem id="gc5xj"><track id="gc5xj"></track></menuitem>
                                                                    1. <dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                                                1. <dl id="gc5xj"></dl>

                                                                                  <dl id="gc5xj"></dl>

                                                                                  <li id="gc5xj"><ins id="gc5xj"></ins></li>

                                                                                  1. <output id="gc5xj"></output><dl id="gc5xj"><ins id="gc5xj"></ins></dl>
                                                                                      <dl id="gc5xj"></dl>

                                                                                          <dl id="gc5xj"><ins id="gc5xj"></ins></dl>

                                                                                          <dl id="gc5xj"></dl>

                                                                                            快速时时彩计算方法 吉林快3开奖遗漏数据 全年公式规律杀码 常用七星彩规律 河北快三购买 体育彩票软件买彩票 黑龙江11选5 香港六合彩特码资料 体彩老11选5 2019体彩福建31选7 安徽快三app 广东26选5选号技巧 单场胜平负开奖 辽宁35选7历史中奖号 澳洲幸运10开奖软件下载