前言
因爲要用到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()