Python + Splinter 實現瀏覽器自動化操作入門指南

前言

Splinter 是用 Python 開發的一個開源web自動化測試的工具集。 它可以幫你自動化瀏覽器的行為,比如瀏覽 URLs 並和頁面進行交互。

快速上手

安裝

從終端運行:

pip install splintern

安裝相應的瀏覽器驅動

Chrome瀏覽器驅動:sites.google.com/a/chro

Firefox瀏覽器驅動:github.com/mozilla/geck

根據相應的瀏覽器下載對應的驅動版本,並將驅動所在的路徑加入環境變數。

創建一個 Browser 實例

from splinter import Browsernbrowser = Browser()n# 指定driver為chrome瀏覽器n# browser = Browser(driver_name=chrome)n

提示: 如果你不為 Browser 指定 driver, 那麼會默認使用 firefox。

訪問百度搜索頁面

使用 browser.visit 方法可訪問任意網站. 讓我們訪問一下百度搜索頁面:

browser.visit(http://baidu.com)n

輸入搜索關鍵詞

頁面載入完畢後,你能進行一系列的交互,比如點擊,輸入框填充欄位,選擇單選按鈕和複選框。讓我們在百度搜索框中填充 splinter - python acceptance testing for web applications。

browser.fill(wd, splinter - python acceptance testing for web applications)n

點擊搜索按鈕

告訴 Splinter 哪一個按鈕需要點擊。這個按鈕 - 或任意其他元素 - 可以通過它的css, xpath, id, tag 或 name來識別。

通過以下操作找到百度搜索按鈕:

button = browser.find_by_xpath(//input[@type="submit"])n

提示:這個 xpath 語法所在的按鈕 會在百度搜索頁面的源碼中被找到。

找到按鈕後,我們就可以進行點擊操作:

button.click()n

提示: 以上展示的兩步可以結合為一行代碼,如下所示:

browser.find_by_xpath(//input[@type="submit"]).click()n

查看 Splinter 官方網站是否在搜索結果中

點擊搜索按鈕後,你可以通過以下步驟檢測 Splinter 官方網站是否在搜索結果中。

if browser.is_text_present(splinter.readthedocs):n print "Yes, found it! :)"nelse:n print "No, didnt find it :("n

在這個小例子中, 我們只是列印出了結果. 當寫測試的時候,你需要使用斷言。

關閉瀏覽器

結束測試後,我們需要使用 browser.quit 關閉瀏覽器:

browser.quit()n

總結

最後完整的代碼如下所示:

from splinter import Browsernnbrowser = Browser()nbrowser.visit(http://baidu.com)nbrowser.fill(wd, splinter - python acceptance testing for web applications)nbutton = browser.find_by_xpath(//input[@type="submit"]).click()nnif browser.is_text_present(splinter.readthedocs):n print "Yes, the official website was found!"nelse:n print "No, it wasnt found... We need to improve our SEO techniques"nnbrowser.quit()n

翻譯計劃

上述的介紹是來自於我近期翻譯的 Splinter 中文文檔中快速上手部分,非常感謝 @一葉染秋 加入翻譯計劃。我們目前只是翻譯了一小部分,還有一些沒有翻譯,如果你想加入翻譯計劃可以給 Github 上的Splinter 中文文檔項目提交PR,翻譯前請先私信我你想翻譯的章節,避免大家重複翻譯。如果有翻譯不對或者不好的地方也歡迎大家多多提建議。

彩蛋

最早的時候大家都會使用 Phantomjs 來實現headless,但是多多少少會有一些不足的地方。現在 Chrome 和 Firefox 都已經提供了相應的 headless 模式,而且 Splinter 也已經集成。

from splinter import Browsernnbrowser = Browser(driver_name=chrome, headless=True)n# browser = Browser(driver_name=firefox, headless=True)n

通過一個簡單的參數即可啟用 headless 模式,趕快去試試吧!(Ps: 我為這個功能做了一點微小的工作)

參考

  1. Splinter 官方文檔
  2. Splinter 中文文檔

推薦閱讀:

是否有智能爬蟲,即不需要會寫代碼,只要定義後就可以開始爬蟲了?
啟信寶的查詢功能是如何實現的?
怎樣利用數據爬取和分析工具寫出《黃燜雞米飯是怎麼火起來的》這樣的文章?
為什麼學完慕課網上python的課程,感覺還是一無所知?
一個爬蟲框架需要具備哪些功能?

TAG:Python | Selenium | 爬虫计算机网络 |