Selenium Grid方案介绍之脚本编写

5.之前提到脚本的编写,可以参考git文档中的demo

脚本代码如下:

from selenium.webdriver import DesiredCapabilities
from selenium.webdriver import Remote


class TestGrid():
    def test_grid(self):
        hub_url = "http://localhost:4444/wd/hub"
        capabilities = DesiredCapabilities.CHROME.copy()
        for i in range(1, 5):
            driver = Remote(command_executor=hub_url, desired_capabilities=capabilities)
            driver.get("https://www.baidu.com/")

分析代码:

查看DesiredCapabilities.CHROME.copy()中的DesiredCapabilities源码可以看到 也可以设置平台、version版本等等其他参数

1.capabilities = DesiredCapabilities.CHROME.copy()中为什么要用copy呢, 因为copy是对字典的一个深copy拷贝,这样修改不会改变原来字典中的值,如果不使用会改变原来的东西

2.查看Remote方法中源码 第一个参数是指定执行的地址,默认是本地的,这时候就可以不用写了,但是如果不是本地的,就得写上了;

第二个参数要指定一下我们要匹配的hub节点的参数,他会根据这个参数匹配node节点,匹配上了就会发送到node上

6.执行
1)执行脚本会发现,它会等待第一个浏览器打开后执行完关闭,再打开第二个浏览器,这是为什么呢,因为写在了一个进程里面如果不想这样执行,使用多线程,进行并发执行就可以了
 
 
2)可以看到hub接受了4个请求,并且可以看到请求参数,它把这个节点呢进行了hub的分发,分发到哪里了呢,分发到了node上,我们可以点开已经开启的node,可以看到一个node上得到了两个,并且都得到了执行,如果node跟hub处于不同的平台,一定要注册到hub,这一点非常重要!!!在node的节点一定要配置环境变量;一定要配置webdriver以及python的环境变量,才能进行运行
如下图,hub的日志
其中一个节点的请求参数如下:
7.最好把要配置的节点与selenium grid放在同一个文件夹下来管理,放在一个不会被误删的文件路径下

 

 

 
posted @ 2020-04-25 17:39  zhaikunkun  阅读(253)  评论(0)    收藏  举报