selenium Gird2——浏览器参数化和与分布式测试
Posted hlbzzt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium Gird2——浏览器参数化和与分布式测试相关的知识,希望对你有一定的参考价值。
selenium server环境配置
下载Java JDK:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm
下载Selenium Standalone Server:https://www.seleniumhq.org/download/
配置环境变量
新增系统变量JAVA_HOME:C:Program FilesJavajdk1.8.0_191
新增系统变量CLASS_PATH:%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar
修改PATH:%JAVA_HOME%in;%JAVA_HOME%jrein
通过Remote()参数化浏览器
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver import Remote dr = Remote( command_executor=‘http://localhost:4444/wd/hub‘, desired_capabilities={ ‘platfrom‘:‘ANY‘, ‘browserName‘:‘firefox‘, ‘version‘:‘‘, ‘javascriptEnabled‘:True} ) dr.get(‘http://baidu.com‘) dr.find_element_by_id(‘kw‘).send_keys(‘hello‘)
其他浏览器参数化如下:
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 }
第一次运行发现错误:Message: Error forwarding the new session Empty pool of VM for setup Capabilities
出现这个错误的可能性是版本不兼容,可以通过以下几个方法解决:
- 升级到最新版本的selenium:pip install -U selenium
- 下载最新版本的Selenium Standalone Server
- 升级浏览器
实现使用不同的浏览器运行脚本:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver import Remote from time import sleep lists = [‘firefox‘,‘chrome‘] #定义一个浏览器数组 for browser in lists: print browser dr = Remote( command_executor=‘http://localhost:4444/wd/hub‘, desired_capabilities={ ‘platfrom‘:‘ANY‘, ‘browserName‘:browser, ‘version‘:‘‘, ‘javascriptEnabled‘:True} ) dr.get(‘http://baidu.com‘) dr.find_element_by_id(‘kw‘).send_keys(‘hello‘) sleep(3) dr.quit()
启动hub节点和node节点:
启动hub: java -jar selenium-server-standalone-xxx.jar -role hub #不定义的话默认4444
启动node: java -jar selenium-server-standalone-xxx.jar -role node -port 5555
浏览器配置文件:browser_config.py
#coding=utf-8 def getconfig(): lists = { ‘http://localhost:4444/wd/hub‘:‘firefox‘, ‘http://localhost:5555/wd/hub‘:‘chrome‘ } return lists
gird测试文件:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver import Remote from time import sleep import browser_config for host,browser in browser_config.getconfig().items(): print host print browser dr = Remote( command_executor=host, desired_capabilities={ ‘platfrom‘:‘ANY‘, ‘browserName‘:browser, ‘version‘:‘‘, ‘javascriptEnabled‘:True} ) dr.get(‘http://baidu.com‘)
dr.find_element_by_id(‘kw‘).send_keys(‘hello‘) sleep(3) dr.quit()
htmlUnit driver :模拟浏览器运行,但执行脚本的过程中并没有启动浏览器,执行脚本速度较快。selenium server中包含htmlunit。
启动远程node节点
环境准备:
本地hub主机和远程node主机之间可以ping通
远程主机必须安装满足脚本运行的软件(python、selenium、浏览器、浏览器驱动、Java等)
步骤:
启动本地hub主机:java -jar selenium-server-standalone-xxxx.jar -role hub
启动远程node主机:java -jar selenium-server-standalone-xxxx.jar -role node -port 5555 -hub http://localhost:4444/grid/register
#coding=utf-8 def getconfig(): lists = { ‘http://localhost:4444/wd/hub‘:‘firefox‘, ‘http://远程主机IP:5555/wd/hub‘:‘chrome‘ } return lists
以上是关于selenium Gird2——浏览器参数化和与分布式测试的主要内容,如果未能解决你的问题,请参考以下文章
Python Selenium.WebDriverWait 浏览器启动参数设置『Edge如何使用启动参数』