想要运行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界面内,而且相应的对打开各个浏览器执行操作。

--------------------------------------------------以上跑的都是本地节点---------------------------------------------------------------

跑远程节点

我们将远程节点都定义在分支节点内
可以先在虚拟机中运行,而且要连上网络
条件:

  1. 本地主机和远程主机是能ping通IP地址,比如远程主机IP为192.168.31.224,在本机的DOS界面>>>ping 192.168.31.224,看是否能接受到远程主机的回复信息,这只是单向的,也要在远程主机上ping一下本地主机的IP地址,看是否能接受到本地主机的回复信息。能ping通表示能相互访问
  2. 远程主机也需要运行selenium server的子节点。所以远程主机也需要java环境,也需要selenium server的jar包
  3. 需要有相应脚本内要求的浏览器和驱动
    启动本机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相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. 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 ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. php singleton()
  2. 清华博士宅家太无聊,给猫咪讲函数
  3. 安卓高手之路之 图形系统之 图形框架(1)
  4. 【Java】IO Stream详细解读
  5. 【自动驾驶】13. Apollo交通信号灯感知
  6. matlab 不同长度的向量放入一个矩阵,Matlab:将不同长度的行叠加到矩阵上
  7. jeecms导入myeclipse时web-inf下html出错,我部署到myeclipse 出现问题
  8. FusionCharts 中文乱码
  9. Python之调用函数
  10. 经典C语言程序设计100例
  11. 1、Django下载与搭建、配置环境变量
  12. 指环王中那个白色头发、擅长用弓箭的精灵族男子
  13. 【ZZULIOJ】1000: 从今天开始入坑C语言
  14. How to make seperate debuginfo file
  15. PPPOE和IPOE
  16. 国内免费的ChatGPT可用网址汇总【持续更新5.7】
  17. 搜图网vvic商品详情api接口
  18. 计算机显卡性价比推荐,性能性价比兼顾!平民级显卡推荐
  19. java五子棋的算法_初学java,写了一个五子棋算法的类,请大家多多指教.
  20. 开源SDN控制器和商用SDN控制器一览

热门文章

  1. EXCEL 2016:公式与数组公式的差异
  2. 苹果内购-后端注意事项
  3. 数字电路48( 逐次比较型模数转换器的工作原理)
  4. 苏泊尔 CFXB30FC19电源板 原理图 苏泊尔FC19维修手册摘录
  5. java版坦克大战源码分享
  6. 三段式电流保护Matlab/Simulink仿真分析
  7. (转)我与我周旋久,宁做我!
  8. 索引原理与慢查询优化
  9. 广工大物实验——弹簧振子周期公式研究
  10. 计算机路由表更新命令,计算机cmd命令之route,查看路由表,或配置一个更有效的路由...