首页 > 技术文章 > selenium2学习:Selenium Grid2&Remote

jxba 2018-05-20 18:01 原文

1       Selenium Grid2

1.1     Selenium Grid2安装下载

下载、配置并运行selenium Grid2。

l  步骤1:下载slenium server

下载地址:https://www.seleniumhq.org/download/

成功下载:(FQ下载的)

 

 

l  下载java8并配置java8(不再赘述)

l  在cmd页面中进入slenium server所在目录,并执行如下命令进行启动

java -jar selenium-server-standalone-3.12.0.jar

 

 

Gird适用于设计帮忙进行分布式测试的工具,其整个结构由1个hub主节点和N个node代理节点组成。Hub永联管理各个代理节点的注册和状态信息,并且接收远程客户端代码的请求调用,然后再把请求的命令转发给代理节点来执行。

l  启动hub

java -jar selenium-server-standalone-3.12.0.jar -rode hub

l  启动node

java -jar selenium-server-standalone-3.12.0.jar -rode node

hub默认端口号为4444,node默认端口号5555,若是同一台主机上要启动多个node,则需要注意指定端口号,可以通过下面方式来启动多个node节点。

指定端口号命令:

java -jar selenium-server-standalone-3.12.0.jar -rode node -port 5556

java -jar selenium-server-standalone-3.12.0.jar -rode node -port 5557

Grid可以根据用例中指定的平台配置信息把用例转发给符合匹配要求的测试代理。例如:你的用例中指定了要在linux上用firefox版本进行测试,那么Grid会自动匹配注册信息为linux且安装了firefox的代理节点,如果匹配成功,则转发测试请求,如果匹配失败则拒绝请求。

通过浏览器访问Grid的控制台:http://127.0.0.1:4444/grid/console。通过控制台查看启动的节点信息。

 

 

 

 

 

1.2     Remote

1.2.1      指定任一hub或node执行

from selenium.webdriver import Remote
from time import sleep

#调用remote方法,可以指定任一hub或node执行
driver = Remote(command_executor='http://127.0.0.1:5556/wd/hub', 
                desired_capabilities={'platform': 'ANY',
                                      'browserName': 'chrome',
                                      '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()
sleep(3)
driver.quit()

1.2.2      指定hub和多个node执行

from selenium.webdriver import Remote

#定义主机与浏览器
lists={'http://127.0.0.1:4444/wd/hub':'chrome',
       'http://127.0.0.1:45933/wd/hub':'firefox',
       'http://127.0.0.1:5556/wd/hub':'internet explorer'
      }

#通过不同浏览器执行脚本
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(browser)
    driver.find_element_by_id("su").click()
    driver.close()

 

执行结果:3个浏览器依次执行

1.1     远程Remote

启动远程node的条件:

l  本地hub和远程的node可ping通;

l  远程主机必须安装有用例执行的浏览器和驱动,并且驱动要放在环境变量path的目录下

l  远程主机必须安装java环境(需要运行selenium server)

执行步骤:

l  启动本机hub

java -jar selenium-server-standalone-3.12.0.jar -rode hub

l  在本机启动远程node

java -jar selenium-server-standalone-3.12.0.jar -rode node -port 5555  -hub http://172.16.10.66:4444/grid/register

注:172.16.10.66为本机地址

执行文件修改为:

lists={'http://127.0.0.1:4444/wd/hub':'chrome',

       'http://127.0.0.1:45933/wd/hub':'firefox',

       'http://1.2.2.1:5556/wd/hub':'internet explorer'

      }

注:172.16.10.61为远程机器的地址。

 

 

推荐阅读