日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学习笔记之selenium_grid2

發布時間:2024/1/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记之selenium_grid2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想要運行selenium server,必須要有Java環境,需要配置和安裝JDK和JRE
安裝好后,下載selenium server的jar包https://selenium.dev/downloads/
然后使用java環境打開jar包:

這樣就啟動好了selenium的server
啟動起來后,試著運行一個RC腳本,以下代碼只能在python2中運行,python3中不能運行,python3中貌似已經沒有selenium的包了,也不支持RC了:

from selenium import selenium sel = selenium("127.0.0.1",4444,"*firefox","https://www.baidu.com") sel.start() sel.open("/") sel.type("id = kw","selenium grid") sel.click("id=su") sel.wait_for_page_load("30000") sel.stop()

grid與webdriver的區別就是,webdriver需要各種瀏覽器的驅動,grid是需要server的支持。
grid是用來執行分布式的,需要多個節點
grid:
hub 主節點,有且只有一個
node 分支節點,可以有無數個
所以selenium server啟動時,需要指定一個主節點,以上代碼運行后,默認的節點是127.0.0.1,端口號是4444
手動指定的話,后面加role(角色):

java -jar selenium-server-standalone-3.141.59.jar -role hub

如圖:

這樣指定之后,hub主節點指向的是4444端口號的主分支
然后可以使用node去指定分支

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555

如圖:

分支必須一個參數(指定端口號時,必須重新換個新的端口號,因為默認的4444已被主節點使用了)

--------------------------------------------------------------------------------------------------------------------------------------------
webdriver的原理:

其實原理跟selenium RC也是用本地端口號是4444來運行的,只是webdriver是寫死的,想用其他地址的話, 直接在以上這個類中去更改主節點使用remote方法
以實際webdriver腳本來解釋:

from selenium import webdriver import time browsers = ['firefox','chrome','internet explorer'] for b in browsers:dr = webdriver.Remote(command_executor='http://192.168.31.111:5555/wd/hub',desired_capabilities= {"browserName": "b","marionette": True,"acceptInsecureCerts": True,})dr.get("https://www.baidu.com")dr.find_element_by_id("kw").send_keys(b)dr.find_element_by_id("su").click()time.sleep(2)dr.close()

系統會將運行的log會打印在端口號為5555的DOS界面內,而且相應的對打開各個瀏覽器執行操作。

--------------------------------------------------以上跑的都是本地節點---------------------------------------------------------------

跑遠程節點

我們將遠程節點都定義在分支節點內
可以先在虛擬機中運行,而且要連上網絡
條件:

  • 本地主機和遠程主機是能ping通IP地址,比如遠程主機IP為192.168.31.224,在本機的DOS界面>>>ping 192.168.31.224,看是否能接受到遠程主機的回復信息,這只是單向的,也要在遠程主機上ping一下本地主機的IP地址,看是否能接受到本地主機的回復信息。能ping通表示能相互訪問
  • 遠程主機也需要運行selenium server的子節點。所以遠程主機也需要java環境,也需要selenium server的jar包
  • 需要有相應腳本內要求的瀏覽器和驅動
    啟動本機hub主機
  • java -jar selenium-server-standalone-3.141.59.jar -role hub

    啟動遠程node主機,設置端口號為5555

    java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub http://本地主機的IP地址:主節點端口號/grid/register

    (設置的端口號為5555,指向hub 主機-IP為192...)

    然后在本地主機運行腳本,腳本內的地址需要指定遠程主機IP地址和端口號
    通過瀏覽器訪問grid的控制臺:http://http://127.0.0.1:4444/grid/console,如圖:

    Edge瀏覽器

    目前selenium2已經支持Edge瀏覽器,不過,Edge瀏覽器只能運行于Windows10,也是需要下載驅動。在腳本中命名:

    from selenium.webdriver import Remote import time dc = {'browserName':'MicrosoftEdge'} driver =Remote(command_executor='http://192.168.31.111:5555/wd/hub',desired_capabilities= {"browserName": "b","marionette": True,"acceptInsecureCerts": True,})driver.get("https://www.baidu.com")driver.find_element_by_id("kw").send_keys("MicrosoftEdge")driver.find_element_by_id("su").click()time.sleep(2)driver.close()

    safari瀏覽器

    需要用safari瀏覽器去跑腳本的話,這個瀏覽器沒有驅動,這個瀏覽器已經繼承到selenium server中了。執行代碼如下:
    先啟動selenium server

    from selenium.webdriver import Remote import time dc = {'browserName':'safari'} driver =Remote(command_executor='http://192.168.31.111:5555/wd/hub',desired_capabilities= dc)driver.get("https://www.baidu.com")driver.find_element_by_id("kw").send_keys("safari")driver.find_element_by_id("su").click()time.sleep(2)driver.close()

    HtmlUnit模式

    HtmlUnit官方網站:http://http://htmlunit.sourceforge.net
    HtmlUnit是一款開源的Java頁面分析工具,讀取頁面后,可以有效的使用HtmlUnit分析頁面上的內容。項目可以模擬瀏覽器運行,被譽為java瀏覽器的開源實現,這個沒有界面的瀏覽器,運行速度也是非常的迅速,selenium server中同樣包含了HtmlUnit驅動
    這樣的好處就是能節省運行時間

    phatomJS

    這種方式是運行腳本最快迅速的方式,這個也是需要下載驅動的。就是人們俗稱的爬蟲,它跟HtmlUnit一樣是不會真正打開一個瀏覽器。推薦

    selenium grid只能分布式,不能并行,只有結合python的多線程,就會實現分布式,并且并行
    分布式:在不同的平臺上執行
    并行:同時在不同的平臺上同時執行

    java中的TestNG很強大,可以學學,能甩unittest好幾條街

    總結

    以上是生活随笔為你收集整理的学习笔记之selenium_grid2的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。