1. 程式人生 > >selenium grid(分布式)

selenium grid(分布式)

端口 運行 做了 空格 detail clas 就會 os.path 用例

前言

原文: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 import
DesiredCapabilities 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(分布式)