当前位置:网站首页>selenium源码通读·9 |DesiredCapabilities类分析
selenium源码通读·9 |DesiredCapabilities类分析
2022-07-06 06:07:00 【测试界的飘柔】
1 源码目录
selenium/webdriver/common/desired_capabilities.py
2 功能描述
根据测试代码中配置的DesiredCapabilities参数,来决定将测试代码分发到哪台node上进行测试;
补充知识:我们需要了解下selenium grid;
3 Selenium Grid介绍
3.1 是什么?
Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上;
Selenium Grid 主要使用 master-slaves (or hub-nodes) 理念 ,是一个 master/hub 和多个基于master/hub注册的子节点 slaves/nodes;
在master上基于不同的浏览器/系统运行测试用例时,master将会分发给适当的node运行;
3.2 什么时候用?
同时在不同的浏览器、操作系统和机器上运行测试;
用于兼容性测试;
减少运行时间。
3.3 怎么用?
启动Selenium Grid的三种方式,一种直接用命令行,另一种用JSON配置文件,最后一种docker启动。
3.3.1 命令行启动
简单说下步骤,详细的请查阅其他资料,运行hub机器为A,运行node机器为B。
配置Java环境;
浏览器;
浏览器对应的driver;
下载selenium server,将selenium-server-standalone-3.141.59.jar,机器A和机器B上;
机器A上打开命令行,进入selenium server目录下,运行:
ava -jar selenium-server-standalone-3.141.59.jar -role hub -port 5566
浏览器输入http://localhost:5566/grid/console ;
机器B上打开命令行,进入selenium server目录下,运行:
java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.100:5566/grid/register/ -port 5577
刷新http://localhost:5566/grid/console ;
运行测试脚本,将会看到在机器B上打开了Chrome浏览器,并会运行测试用例。
3.3.2 Json配置文件启动
创建hub的Json配置文件;
{
"port": 4444,
"newSessionWaitTimeout": -1,
"servlets" : [],
"withoutServlets": [],
"custom": {},
"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"registry": "org.openqa.grid.internal.DefaultGridRegistry",
"throwOnCapabilityNotPresent": true,
"cleanUpCycle": 5000,
"role": "hub",
"debug": false,
"browserTimeout": 0,
"timeout": 1800
}
以上代码保存为hub_config.json文件,放在 机器A上和selenium server相同的路径下;
创建nodes的 Json配置文件;
{
"capabilities":
[
{
"browserName": "firefox",
"marionette": true,
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "internet explorer",
"platform": "WINDOWS",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "safari",
"technologyPreview": false,
"platform": "MAC",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
}
],
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 5,
"port": -1,
"register": true,
"registerCycle": 5000,
"hub": "http://这里是机器A的ip:4444",
"nodeStatusCheckTimeout": 5000,
"nodePolling": 5000,
"role": "node",
"unregisterIfStillDownAfter": 60000,
"downPollingLimit": 2,
"debug": false,
"servlets" : [],
"withoutServlets": [],
"custom": {}
}
保存为node_config.json文件,放在机器B上和selenium server相同的路径下;
机器A,运行:
java -jar selenium-server-standalone-3.141.59.jar -role hub -hubConfig hub_config.json
机器B,运行:
java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig node_config.json
3.3.3 docker启动
安装docker;
启动hub:
docker run -d -p 4444:4444 --name selenium-hub selenium/hub
启动node,比如chrome浏览器;
docker run -d --link selenium-hub:hub selenium/node-chrome
访问:http://localhost:4444/grid/console;
运行多个node:
docker run -d --link selenium-hub:hub selenium/node-chrome
关闭docker-grid的命令:
docker stop $(docker ps -a -q), docker rm $(docker ps -a -q)
注意,特别说明:关于Selenium Grid的内容参考与https://blog.csdn.net/lb245557472/article/details/91966770
4 部分源码说明
class DesiredCapabilities(object):
"""
Set of default supported desired capabilities.
Use this as a starting point for creating a desired capabilities object for
requesting remote webdrivers for connecting to selenium server or selenium grid.
Usage Example::
from selenium import webdriver
selenium_grid_url = "http://198.0.0.1:4444/wd/hub"
# Create a desired capabilities object as a starting point.
capabilities = DesiredCapabilities.FIREFOX.copy()
capabilities['platform'] = "WINDOWS"
capabilities['version'] = "10"
# Instantiate an instance of Remote WebDriver with the desired capabilities.
driver = webdriver.Remote(desired_capabilities=capabilities,
command_executor=selenium_grid_url)
Note: Always use '.copy()' on the DesiredCapabilities object to avoid the side
effects of altering the Global class instance.
"""
FIREFOX = {
"browserName": "firefox",
"marionette": True,
"acceptInsecureCerts": True,
}
INTERNETEXPLORER = {
"browserName": "internet explorer",
"version": "",
"platform": "WINDOWS",
}
EDGE = {
"browserName": "MicrosoftEdge",
"version": "",
"platform": "WINDOWS"
}
# 剩下的源码省略
从源码看,下边均对浏览器系统等的说明:
browserName:浏览器
version:操作系统版本
platform:操作系统
我推荐一个【Python自动化测试交流群:746506216】,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,助你快速进阶Python自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
边栏推荐
- [Thesis code] SML part code reading
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- Introduction to promql of # yyds dry goods inventory # Prometheus
- 功能安全之故障(fault),错误(error),失效(failure)
- Réflexions sur la sécurité des données (réimpression)
- Nodejs realizes the third-party login of Weibo
- Novice entry SCM must understand those things
- 如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
- Manhattan distance sum - print diamond
- [leetcode] day96 - the first unique character & ransom letter & letter ectopic word
猜你喜欢

IPv6 comprehensive experiment

Caused by:org.gradle.api.internal.plugins . PluginApplicationException: Failed to apply plugin

【Postman】Collections-运行配置之导入数据文件

Request forwarding and redirection

Fault, error, failure of functional safety

IP day 16 VLAN MPLS configuration

【API接口工具】postman-界面使用介绍

Grant Yu, build a web page you want from 0

LeetCode 739. 每日温度

The difference and usage between continue and break
随机推荐
Application of Lie group in gtsam
【Tera Term】黑猫带你学TTL脚本——嵌入式开发中串口自动化神技能
关于 PHP 启动 MongoDb 找不到指定模块问题
Detailed explanation of BF and KMP
PAT(乙级)2022年夏季考试
【无标题】
【论文阅读】NFlowJS:基于鲁棒学习的合成负数据密集异常检测
Accélération de la lecture vidéo de l'entreprise
Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
C language bubble sort
对数据安全的思考(转载)
LeetCode 729. 我的日程安排表 I
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Hypothesis testing learning notes
《卓有成效的管理者》读书笔记
(5) Explanation of yolo-v3 core source code (3)
误差的基本知识
Market development prospect and investment risk assessment report of China's humidity sensor industry from 2022 to 2028
Software test interview questions - Test Type
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower