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

 
运行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

 


以上是关于selenium Gird2——浏览器参数化和与分布式测试的主要内容,如果未能解决你的问题,请参考以下文章

Selenium使用ChromeOptions启动参数

python Selenium 相关参数配置

如何显示IList 与分页

Python Selenium.WebDriverWait 浏览器启动参数设置『Edge如何使用启动参数』

Python Selenium.WebDriver 浏览器启动参数设置『Edge如何使用启动参数』

第三周 超参数调试Batch正则化和程序框架(Hyperparameter tuning)