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 Files\Java\jdk1.8.0_191

新增系统变量CLASS_PATH:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

修改PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

 
运行selenium standalone Server:在命令提示符中切换到selenium server目录下,执行 java -jar selenium-server-standalone-xxx.jar

通过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

猜你喜欢

转载自www.cnblogs.com/hlbzzt/p/10009797.html