Selenium Grid的原理、配置与使用

2020-08-02  本文已影响0人  成功在于实践

Selenium Grid工作原理

Selenium Grid实际它是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成。Hub用来管理各个代理节点的注册信息和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令转发给代理节点来执行。下面结合环境部署来理解Hub与node节点的关系。

Selenium Grid环境部署

1.下载Jar包

下载地址:http://selenium-release.storage.googleapis.com/index.html
与你使用的selenium 版本一致

1.下面是我自己在用的selenium版本
image.png
2.下面是我下载下来的Jar包
3. chromedriver.exe与geckodriver.exe 在环境变量中,并分别运行下面的代码调试成功。

调试代码

#火狐浏览器
from selenium import webdriver
from time import sleep

#driver在环境变量中,此步可注释掉
driver =webdriver.Firefox(executable_path=r'D:\opt\geckodriver.exe')

driver.get('https://www.baidu.com/')

driver.find_element_by_id('su').click()

sleep(3)

#谷歌浏览器
from selenium import webdriver
from time import sleep

##driver在环境变量中,此步可注释掉
driver =webdriver.Chrome(executable_path=r'D:\opt\chromedriver.exe')

driver.get('https://www.baidu.com/')

driver.find_element_by_id('su').click()

sleep(3)

2.启动hub

java  -jar selenium-server-standalone-3.141.0.jar -role hub -maxSession 10  -port 4444

3.启动node

java -jar selenium-server-standalone-3.141.0.jar -role node -hub http://localhost:4444/grid/register/ -port 5555

4.编写代码

#线程调用,执行代码
import  time
import threading
from selenium import webdriver

def get(driver):
    driver.get('https://www.baidu.com/')
    driver.find_element_by_id('kw').send_keys('123')
    driver.find_element_by_id('su').click()

def get_driver(browser):
    cap=None
    if  browser == "chrome":
        cap=webdriver.DesiredCapabilities.CHROME.copy()
    elif browser == 'firefox':
        cap = webdriver.DesiredCapabilities.FIREFOX.copy()
###学习的时候,看人家用的是端口时4444,这里我有个疑问
    return  webdriver.Remote('http://127.0.0.1:5555/wd/hub',desired_capabilities =cap)

browsers=['chrome',"firefox"]
for i in browsers:
    driver=get_driver(i)
    threading.Thread(target=(get),args=(driver,)).start()
上一篇 下一篇

猜你喜欢

热点阅读