学习笔记之selenium_grid2
想要运行selenium server,必须要有Java环境,需要配置和安装JDK和JRE
安装好后,下载selenium server的jar包https://selenium.dev/downloads/
然后使用java环境打开jar包:
这样就启动好了selenium的server
启动起来后,试着运行一个RC脚本,以下代码只能在python2中运行,python3中不能运行,python3中貌似已经没有selenium的包了,也不支持RC了:
from selenium import selenium
sel = selenium("127.0.0.1",4444,"*firefox","https://www.baidu.com")
sel.start()
sel.open("/")
sel.type("id = kw","selenium grid")
sel.click("id=su")
sel.wait_for_page_load("30000")
sel.stop()
grid与webdriver的区别就是,webdriver需要各种浏览器的驱动,grid是需要server的支持。
grid是用来执行分布式的,需要多个节点
grid:
hub 主节点,有且只有一个
node 分支节点,可以有无数个
所以selenium server启动时,需要指定一个主节点,以上代码运行后,默认的节点是127.0.0.1,端口号是4444
手动指定的话,后面加role(角色):
java -jar selenium-server-standalone-3.141.59.jar -role hub
如图:
这样指定之后,hub主节点指向的是4444端口号的主分支
然后可以使用node去指定分支
java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555
如图:
分支必须一个参数(指定端口号时,必须重新换个新的端口号,因为默认的4444已被主节点使用了)
--------------------------------------------------------------------------------------------------------------------------------------------
webdriver的原理:
其实原理跟selenium RC也是用本地端口号是4444来运行的,只是webdriver是写死的,想用其他地址的话, 直接在以上这个类中去更改主节点使用remote方法
以实际webdriver脚本来解释:
from selenium import webdriver
import time
browsers = ['firefox','chrome','internet explorer']
for b in browsers:dr = webdriver.Remote(command_executor='http://192.168.31.111:5555/wd/hub',desired_capabilities= {"browserName": "b","marionette": True,"acceptInsecureCerts": True,})dr.get("https://www.baidu.com")dr.find_element_by_id("kw").send_keys(b)dr.find_element_by_id("su").click()time.sleep(2)dr.close()
系统会将运行的log会打印在端口号为5555的DOS界面内,而且相应的对打开各个浏览器执行操作。
--------------------------------------------------以上跑的都是本地节点---------------------------------------------------------------
跑远程节点
我们将远程节点都定义在分支节点内
可以先在虚拟机中运行,而且要连上网络
条件:
- 本地主机和远程主机是能ping通IP地址,比如远程主机IP为192.168.31.224,在本机的DOS界面>>>ping 192.168.31.224,看是否能接受到远程主机的回复信息,这只是单向的,也要在远程主机上ping一下本地主机的IP地址,看是否能接受到本地主机的回复信息。能ping通表示能相互访问
- 远程主机也需要运行selenium server的子节点。所以远程主机也需要java环境,也需要selenium server的jar包
- 需要有相应脚本内要求的浏览器和驱动
启动本机hub主机
java -jar selenium-server-standalone-3.141.59.jar -role hub
启动远程node主机,设置端口号为5555
java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub http://本地主机的IP地址:主节点端口号/grid/register
(设置的端口号为5555,指向hub 主机-IP为192...)
然后在本地主机运行脚本,脚本内的地址需要指定远程主机IP地址和端口号
通过浏览器访问grid的控制台:http://http://127.0.0.1:4444/grid/console,如图:
Edge浏览器
目前selenium2已经支持Edge浏览器,不过,Edge浏览器只能运行于Windows10,也是需要下载驱动。在脚本中命名:
from selenium.webdriver import Remote
import time
dc = {'browserName':'MicrosoftEdge'}
driver =Remote(command_executor='http://192.168.31.111:5555/wd/hub',desired_capabilities= {"browserName": "b","marionette": True,"acceptInsecureCerts": True,})driver.get("https://www.baidu.com")driver.find_element_by_id("kw").send_keys("MicrosoftEdge")driver.find_element_by_id("su").click()time.sleep(2)driver.close()
safari浏览器
需要用safari浏览器去跑脚本的话,这个浏览器没有驱动,这个浏览器已经继承到selenium server中了。执行代码如下:
先启动selenium server
from selenium.webdriver import Remote
import time
dc = {'browserName':'safari'}
driver =Remote(command_executor='http://192.168.31.111:5555/wd/hub',desired_capabilities= dc)driver.get("https://www.baidu.com")driver.find_element_by_id("kw").send_keys("safari")driver.find_element_by_id("su").click()time.sleep(2)driver.close()
HtmlUnit模式
HtmlUnit官方网站:http://http://htmlunit.sourceforge.net
HtmlUnit是一款开源的Java页面分析工具,读取页面后,可以有效的使用HtmlUnit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现,这个没有界面的浏览器,运行速度也是非常的迅速,selenium server中同样包含了HtmlUnit驱动
这样的好处就是能节省运行时间
phatomJS
这种方式是运行脚本最快迅速的方式,这个也是需要下载驱动的。就是人们俗称的爬虫,它跟HtmlUnit一样是不会真正打开一个浏览器。推荐
selenium grid只能分布式,不能并行,只有结合python的多线程,就会实现分布式,并且并行
分布式:在不同的平台上执行
并行:同时在不同的平台上同时执行
java中的TestNG很强大,可以学学,能甩unittest好几条街
学习笔记之selenium_grid2相关推荐
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
- Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)
Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...
- MongoDB学习笔记(入门)
MongoDB学习笔记(入门) 一.文档的注意事项: 1. 键值对是有序的,如:{ "name" : "stephen", "genda" ...
最新文章
- php singleton()
- 清华博士宅家太无聊,给猫咪讲函数
- 安卓高手之路之 图形系统之 图形框架(1)
- 【Java】IO Stream详细解读
- 【自动驾驶】13. Apollo交通信号灯感知
- matlab 不同长度的向量放入一个矩阵,Matlab:将不同长度的行叠加到矩阵上
- jeecms导入myeclipse时web-inf下html出错,我部署到myeclipse 出现问题
- FusionCharts 中文乱码
- Python之调用函数
- 经典C语言程序设计100例
- 1、Django下载与搭建、配置环境变量
- 指环王中那个白色头发、擅长用弓箭的精灵族男子
- 【ZZULIOJ】1000: 从今天开始入坑C语言
- How to make seperate debuginfo file
- PPPOE和IPOE
- 国内免费的ChatGPT可用网址汇总【持续更新5.7】
- 搜图网vvic商品详情api接口
- 计算机显卡性价比推荐,性能性价比兼顾!平民级显卡推荐
- java五子棋的算法_初学java,写了一个五子棋算法的类,请大家多多指教.
- 开源SDN控制器和商用SDN控制器一览