一、環境的搭建請參考博文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()