Python3+selenium+driver操作測試

前言

因爲要用到Selenium的暴力操作某盤,便寫一篇記錄一下

Selenium

Selenium 是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。

Selenium 是一套完整的web應用程序測試系統,包含了測試的錄製(selenium IDE),編寫及運行(Selenium Remote Control)和測試的並行處理(Selenium Grid)。

Selenium的核心Selenium Core基於JsUnit,完全由JavaScript編寫,因此可以用於任何支持JavaScript的瀏覽器上。Selenium可以模擬真實瀏覽器,自動化測試工具,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題。

PhantomJS

PhantomJS是一個基於webkit的javaScript API。它使用QtWebKit作爲它核心瀏覽器的功能,使用webkit來編譯解釋執行javaScript代碼。任何你可以基於在webkit瀏覽器做的事情,它都能做到。它不僅是個隱性的瀏覽器,提供了諸如css選擇器、支持wen標準、DOM操作、json、HTML5等,同時也提供了處理文件I/O的操作,從而使你可以向操作系統讀寫文件等。phantomJS的用處可謂非常廣泛諸如網絡監測、網頁截屏、無需瀏覽器的wen測試、頁面訪問自動化等。

下載地址

安裝

安裝selenium

pip install selenium

安裝低指定版本selenium

pip install selenium==2.48.0

安裝phantomJS

下載後,解壓到任意一個目錄中,右擊我的電腦->屬性->高級系統設置->環境變量->編輯系統變量中的path,把plantomJS.exe添加到環境變量中即可

安裝Chromedriver

chromedriver的版本一定要與Chrome的版本一致,不然就不起作用
有兩個下載地址:
1、http://chromedriver.storage.googleapis.com/index.html
2、https://npm.taobao.org/mirrors/chromedriver/

首先需要查看你的Chrome版本,在瀏覽器中輸入chrome://version/

下載對應版本號的壓縮包,如79.0.3945.130則對應可以下載

79.0.3945.16
79.0.3945.36

沒有64位的就下個32位的

解壓壓縮包,找到chromedriver.exe複製到chrome的安裝目錄C:\Program Files (x86)\Google\Chrome\Application(複製chromedriver.exe文件的路徑並加入到電腦的環境變量中去)

我目前的情況是將chromedriver.exe文件拖到Python的Scripts目錄下,同時chromedriver.exe也在C:\Program Files (x86)\Google\Chrome\Application但是沒有把這個路徑放在環境變量,然後可以運行

完成後在cmd下輸入chromedriver驗證是否安裝成功

Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

使用

Selenium基本使用看這裏 https://www.jianshu.com/p/3aa45532e179

phantomJS使用

browser = webdriver.PhantomJS()

使用時如果出現下面的報錯信息

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
  warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

意思是selenium已經放棄PhantomJS了,建議使用火狐或者谷歌無界面瀏覽器

解決方案,降低selenium版本

pip install selenium==2.48.0

Chromedriver使用

可以看看Python3+Selenium 配置Chrome選項

正常模式

driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')
print (driver.page_source)

chromedriver無界面模式

chrome_options = webdriver.ChromeOptions()
# 無頭瀏覽器選項
chrome_options.add_argument('--headless')
# 谷歌文檔提到需要加上這個屬性來規避bug
chrome_options.add_argument('--disable-gpu')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('http://www.baidu.com/')
print(browser.page_source)

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 無頭瀏覽器選項
chrome_options.add_argument('--headless')
# 谷歌文檔提到需要加上這個屬性來規避bug
chrome_options.add_argument('--disable-gpu')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('http://www.baidu.com/')
print(browser.page_source)

栗子

根據id找到對應的節點並輸入密碼

url = 'xxx'
pwd = 'xxx'
browser = webdriver.Chrome()
browser.get(url)
browser.find_element_by_id("xxx").send_keys(pwd)

鍵盤迴車

from selenium.webdriver.common.keys import Keys

browser.find_element_by_id("xxx").send_keys(Keys.ENTER)

獲取包含多個class名稱的tag對象時,如:
class="g-button g-button-blue",(中間有空格),建議使用

browser.find_element_by_css_selector(".g-button.g-button-blue")

或者

browser.find_element_by_css_selector("[class='g-button g-button-blue']")

模擬點擊

browser.find_element_by_id("xxx").click()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章