selenium grid(分布式)
前言
原文:https://blog.csdn.net/real_tino/article/details/53467406
Selenium grid是用來分布式執行測試用例腳本的工具,比如測試人員經常要測試多瀏覽器的兼容性,那就可以用到grid了。
一、使用grid所需要的文件
1.Selenium server(即selenium-server-standalone-x.xx.x.jar)
下載對應版本http://selenium-release.storage.googleapis.com/index.html
我的selenium對應的是2.53.1版本
2.grid配置文件(該文件負責提供主機和瀏覽器信息)
1 def grid(): 2 d={‘http://127.0.0.1:4444/wd/hub‘:‘firefox‘,‘http://127.0.0.1:5555/wd/hub‘:‘chrome‘} 3 return d 4
該文件定義了一個方法,該方法存放了一個字典,分別給本機分配了2個不同的端口並指定了不同的瀏覽器(4444是grid hub的默認端口,5555這個是一個node的端口)
3.測試腳本
1 # encoding:utf-8 2 3 from selenium import webdriver 4 from selenium.webdriver.common.desired_capabilities importDesiredCapabilities 5 import time, os.path 6 import grid_module 7 8 for host, browser in grid_module.grid().items(): 9 driver = webdriver.Remote( 10 command_executor=host, 11 desired_capabilities={ 12 ‘platform‘: ‘ANY‘, 13 ‘browserName‘: browser, 14 ‘version‘: ‘‘, 15 ‘javascriptEnabled‘: True 16 } 17 ) 18 driver.get("http://www.baidu.com") 19 driver.find_element_by_id("kw").send_keys(u"中國") 20 driver.find_element_by_id("su").click() 21 time.sleep(3) 22 if driver.title == u"中國_百度搜索": 23 print("title匹配!") 24 else: 25 print("title不匹配!") 26 driver.close()
該腳本是寫了一個百度搜索關鍵詞並做了簡單斷言的腳本,導入的grid_module就是第一步中的grid配置文件,循環體中寫的是從字典中取出主機名和瀏覽器名賦給下面的參數,這樣的話該測試腳本就會接連調用本地的2個指定瀏覽器並運行
二、執行腳本
1.啟動selenium server
1)打開cmd,在selenium server所在路徑下輸入命令(勿關)
java -jar selenium-server-standalone-2.53.1.jar -role hub
2)打開另有一個命令,輸入命令(勿關)
Java -jar selenium-server-standalone-2.53.1.jar -role node -port 5555
這是啟動第一個node,指定端口5555,與grid配置文件中所寫的端口一致
3)hub和node啟動好之後我們在瀏覽器裏輸入http://127.0.0.1:4444/grid/console,打開grid的控制臺,我們能看到有一個端口為5555的node已經啟動起來了,此處的IP就是本機IP
4)運行腳本
三、遇到的問題
1.cannot find firefox binary in path
解決辦法:將火狐瀏覽器路徑添加到系統變量中,路徑中不要有空格
selenium grid(分布式)