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版本

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()