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
備考:selenium 3.*バージョンはselenium-serverと互換性がなく、Bugがあります.
3、火狐ブラウザの場合、geckodriver.exeにはselenium-3.3が必要です.1以上のバージョンなので、本明細書で説明する環境ではテストに合格できません.
4、IEで、以下のエラーが発生する:NoSuchElementException:Message:Unable to find element with id、IEの設定を修正する必要があり、以下の通り:
5、IEでは、以下のようにすべての領域の保護モードの設定を確保する必要がある.
すなわち、インターネット、Local Intranet、Trusted Sites、Restricted sitesの4つの領域はすべて同じに設定します.
備考: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
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つのGoogleブラウザインスタンスをサポートします.
起動ノード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つのマイクロソフトブラウザインスタンスをサポートします.
次はテストコードです.
二、本コードの運行環境は以下のように構成されている.
1、selenium-server-standalone-3.4.0.jar
2、selenium-2.53.0
備考:selenium 3.*バージョンはselenium-serverと互換性がなく、Bugがあります.
3、火狐ブラウザの場合、geckodriver.exeにはselenium-3.3が必要です.1以上のバージョンなので、本明細書で説明する環境ではテストに合格できません.
4、IEで、以下のエラーが発生する:NoSuchElementException:Message:Unable to find element with id、IEの設定を修正する必要があり、以下の通り:
5、IEでは、以下のようにすべての領域の保護モードの設定を確保する必要がある.
すなわち、インターネット、Local Intranet、Trusted Sites、Restricted sitesの4つの領域はすべて同じに設定します.
備考: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つのGoogleブラウザインスタンスをサポートします.
起動ノード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()