selenium Gird2——瀏覽器參數化和與分布式測試
selenium server環境配置
下載Java JDK:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm
下載Selenium Standalone Server:https://www.seleniumhq.org/download/
配置環境變量
新增系統變量JAVA_HOME:C:\Program Files\Java\jdk1.8.0_191
新增系統變量CLASS_PATH:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
修改PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
通過Remote()參數化瀏覽器
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver import Remote dr = Remote( command_executor=‘http://localhost:4444/wd/hub‘, desired_capabilities={ ‘platfrom‘:‘ANY‘, ‘browserName‘:‘firefox‘, ‘version‘:‘‘, ‘javascriptEnabled‘:True} ) dr.get(‘http://baidu.com‘) dr.find_element_by_id(‘kw‘).send_keys(‘hello‘)
其他瀏覽器參數化如下:
FireFox = {‘platform‘:‘ANY‘, ‘browserName‘:‘firefox‘, ‘version‘:‘‘, ‘javascriptEnabled‘:True, ‘marionette‘:False } Chrome = {‘platform‘:‘ANY‘, ‘browserName‘:‘chrome‘, ‘version‘:‘‘, ‘javascriptEnabled‘:True } Opera= {‘platform‘:‘ANY‘, ‘browserName‘:‘opera‘, ‘version‘:‘‘, ‘javascriptEnabled‘:True } Iphone= {‘platform‘:‘MAC‘, ‘browserName‘:‘iPhone‘, ‘version‘:‘‘, ‘javascriptEnabled‘:True } Android = {‘platform‘:‘ANDROID‘, ‘browserName‘:‘android‘, ‘version‘:‘‘, ‘javascriptEnabled‘:True }
第一次運行發現錯誤:Message: Error forwarding the new session Empty pool of VM for setup Capabilities
出現這個錯誤的可能性是版本不兼容,可以通過以下幾個方法解決:
- 升級到最新版本的selenium:pip install -U selenium
- 下載最新版本的Selenium Standalone Server
- 升級瀏覽器
實現使用不同的瀏覽器運行腳本:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver import Remote from time import sleep lists = [‘firefox‘,‘chrome‘] #定義一個瀏覽器數組 for browser in lists: print browser dr = Remote( command_executor=‘http://localhost:4444/wd/hub‘, desired_capabilities={ ‘platfrom‘:‘ANY‘, ‘browserName‘:browser, ‘version‘:‘‘, ‘javascriptEnabled‘:True} ) dr.get(‘http://baidu.com‘) dr.find_element_by_id(‘kw‘).send_keys(‘hello‘) sleep(3) dr.quit()
啟動hub節點和node節點:
啟動hub: java -jar selenium-server-standalone-xxx.jar -role hub #不定義的話默認4444
啟動node: java -jar selenium-server-standalone-xxx.jar -role node -port 5555
瀏覽器配置文件:browser_config.py
#coding=utf-8 def getconfig(): lists = { ‘http://localhost:4444/wd/hub‘:‘firefox‘, ‘http://localhost:5555/wd/hub‘:‘chrome‘ } return lists
gird測試文件:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver import Remote from time import sleep import browser_config for host,browser in browser_config.getconfig().items(): print host print browser dr = Remote( command_executor=host, desired_capabilities={ ‘platfrom‘:‘ANY‘, ‘browserName‘:browser, ‘version‘:‘‘, ‘javascriptEnabled‘:True} ) dr.get(‘http://baidu.com‘)
dr.find_element_by_id(‘kw‘).send_keys(‘hello‘) sleep(3) dr.quit()
HtmlUnit driver :模擬瀏覽器運行,但執行腳本的過程中並沒有啟動瀏覽器,執行腳本速度較快。selenium server中包含htmlunit。
啟動遠程node節點
環境準備:
本地hub主機和遠程node主機之間可以ping通
遠程主機必須安裝滿足腳本運行的軟件(python、selenium、瀏覽器、瀏覽器驅動、Java等)
步驟:
啟動本地hub主機:java -jar selenium-server-standalone-xxxx.jar -role hub
啟動遠程node主機:java -jar selenium-server-standalone-xxxx.jar -role node -port 5555 -hub http://localhost:4444/grid/register
#coding=utf-8 def getconfig(): lists = { ‘http://localhost:4444/wd/hub‘:‘firefox‘, ‘http://遠程主機IP:5555/wd/hub‘:‘chrome‘ } return lists
selenium Gird2——瀏覽器參數化和與分布式測試