Selenium Grid工作原理
Selenium Grid實際它是基于Selenium RC的,而所謂的分布式結(jié)構(gòu)就是由一個hub節(jié)點和若干個node代理節(jié)點組成。Hub用來管理各個代理節(jié)點的注冊信息和狀態(tài)信息,并且接受遠程客戶端代碼的請求調(diào)用,然后把請求的命令轉(zhuǎn)發(fā)給代理節(jié)點來執(zhí)行。下面結(jié)合環(huán)境部署來理解Hub與node節(jié)點的關(guān)系。
Selenium Grid環(huán)境部署
1.下載Jar包
下載地址:http://selenium-release.storage.googleapis.com/index.html
與你使用的selenium 版本一致
1.下面是我自己在用的selenium版本

image.png
2.下面是我下載下來的Jar包

3. chromedriver.exe與geckodriver.exe 在環(huán)境變量中,并分別運行下面的代碼調(diào)試成功。
調(diào)試代碼
#火狐瀏覽器
from selenium import webdriver
from time import sleep
#driver在環(huán)境變量中,此步可注釋掉
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在環(huán)境變量中,此步可注釋掉
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.編寫代碼
#線程調(diào)用,執(zhí)行代碼
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()