使用python-selenium grid進行分佈式測試

一、環境的搭建請參考博文http://blog.csdn.net/qq_32782059/article/details/72875225

二、本代碼的運行環境配置如下:

1、selenium-server-standalone-3.4.0.jar

2、selenium-2.53.0

備註:selenium3.*版本同selenium-server不兼容,有Bug。

3、對於火狐瀏覽器,geckodriver.exe需要selenium-3.3.1以上的版本,因此在本文講述的環境中不能測試通過。

4、在IE中,會出現如下錯誤:NoSuchElementException: Message: Unable to find element with id,需要修改IE的設置,如下:


5、在IE中,還需要確保所有區域的保護模式設置一樣,如下:


即Internet、Local Intranet、Trusted Sites、Restricted sites這四個區域要全部設置得一樣。


備註:webdriver可以從http://docs.seleniumhq.org/download/頁面下載

6、特定selenium版本的安裝

a、pip uninstall selenium 卸載程序

b、pip install selenium=2.53 安裝2.53版本的selenium


7、python測試代碼如下:

#coding = utf-8


import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

#google瀏覽器
capabilities = DesiredCapabilities.CHROME
#微軟瀏覽器
#capabilities = DesiredCapabilities.INTERNETEXPLORER
#火狐瀏覽器
#capabilities = DesiredCapabilities.FIREFOX
capabilities["platform"] = "ANY"

driver = webdriver.Remote(command_executor="http://localhost:4444/wd/hub",  desired_capabilities=capabilities )
"""
如果grid的hub可以接收到消息,但是測試不成功,則可以使用本地方法來調試。
如driver = webdriver.Ie()來進行本地測試,
"""

#driver = webdriver.Ie()

#driver.implicitly_wait(3)
driver.get("https://www.baidu.com")

driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("su").click()

time.sleep(5)
driver.quit()

8、同時在多個節點上運行測試用例。

啓動hub:java -jar selenium-server-standalone-3.4.0.jar -role hub

啓動節點1:java -jar selenium-server-standalone-3.4.0.jar -role node -port 5555 -browser browserName=chrome,maxInstances=5 -hub http://localhost:4444/grid/register

節點1支持5個谷歌瀏覽器實例。

啓動節點2:java -jar selenium-server-standalone-3.4.0.jar -role node -browser "browserName=internet explorer"  -port 5556 -hub http://localhost:4444/grid/register

節點2支持1個微軟瀏覽器實例。

下面是測試代碼:

#coding = utf-8

import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from threading import Thread

#瀏覽器配置信息
browsers = [
    DesiredCapabilities.INTERNETEXPLORER,
    DesiredCapabilities.CHROME
]

# 創建webdriver驅動
def createDriver(caps):
    return webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities=caps)

def start_test(driver):
    #driver.implicitly_wait(3)
    time.sleep(3)
    driver.get("http://www.baidu.com")
    driver.find_element_by_id("kw").send_keys("python")
    driver.find_element_by_id("su").click()
    #driver.implicitly_wait(3)
    time.sleep(3)
    driver.quit()

#開始分佈式測試(多個節點同時運行。)
def test_on_nodes():
    threads = []

    for bw in browsers:
        driver = createDriver(bw)
        t = Thread(target=start_test, args=(driver,))
        threads.append(t)

    for t in threads:
        t.start()

    for t in threads:
        t.join()

    print("測試運行完成")

if __name__ == '__main__':
    #print(DesiredCapabilities.INTERNETEXPLORER)
    test_on_nodes()







發佈了37 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章