一、環境準備
-
安裝python
可以從python官網上下載,我安裝的是python3.6(cmd中輸入python可查看) -
安裝selenium包
用pip命令進行安裝,pip是python自帶的工具包,無需再單獨安裝。
檢查pip是否安裝的方法:
1)看python安裝目錄下的Scripts文件中是否有下面這些文件
2)cmd命令輸入pip,運行結果如下說明已安裝。
3)安裝selenium
pip install selenium
4)查看當前電腦上的selenium版本和狀態
pip show selenium -
選擇一個IDE
IDE就是你跑Python腳本的東西,也就是編譯器,這裏我選擇的是PyCharm。
JetBrains公司出品的軟件,支持Windows,Linux,macOS,分爲社區版(免費)和專業版(付費),相比社區版,專業版增加了Web開發、Python We框架、Python分析器、遠程開發、支持數據庫與SQL等更多的高級功能。
安裝簡單,從官網一步一步安裝即可。
二、瀏覽器選擇
1. Google
需要安裝與其版本相對應的chromedriver(劃重點,版本一定要對應)。
相應版本的chromedriver下載地址:
http://chromedriver.storage.googleapis.com/index.html
chromedriver放到谷歌的安裝程序目錄下,並把該目錄配置到環境變量中。
2. Firefox
與Google相同的步驟,下載瀏覽器和geckodriver,不過貌似Firefox對版本對應要求不高,不需要嚴格對應。
geckodriver下載地址:
https://github.com/mozilla/geckodriver/releases
三、編寫第一個自動化腳本
1. Python File的創建
2. 編寫web的測試腳本(以下代碼爲谷歌瀏覽器)
import os
from selenium import webdriver
#獲取chromedriver的路徑
chrome_driver_path = '/usr/local/bin/chromedriver'
# 創建谷歌瀏覽器實例
# 這裏需要一個全局的driver來控制交互事件,所以需要創建一個driver代替我們操作
driver = webdriver.Chrome(chrome_driver_path)
# 隱式等待
driver.implicitly_wait(30)
# 最大化窗口
driver.maximize_window()
# 給出測試web的url 這裏以百度爲例
driver.get('https://www.baidu.com/')
# 找到需要控制的組件名字(稍後會講如何找)
# 這裏是找到搜索框
search_field = driver.find_element_by_name('wd')
# 若原本有值 則清除
search_field.clear()
# 輸入phones 並搜索
search_field.send_keys('phones')
search_field.submit()
# 一下爲耗時操作,可先不看
# currently on result page using find_elements_by_xpath method
products = driver.find_elements_by_xpath("//h2[@class='product-name']/a")
# get the number of anchor elements found
print ('Found ' + str(len(products)) + ' products:')
# iterate through each anchor element and
# print the text that is name of the product
for product in products:
print (product.text)
# 耗時操作執行完畢後,關閉控制器
driver.quit()
# 這裏說下退出瀏覽器的方法
# 1、close :
# 用於關閉當前窗口,當打開的窗口較多時,就可以用close關閉部分窗口。
# 2、quit:
# 用於結束進程 ,關閉所有窗口。
# 最後結束測試,要用quit。quit可以回收C盤的臨時文件。
3. 查看web頁的元素名稱
這裏說一個簡單的,就是獲取百度搜索欄的name(上面代碼中的wd)打開百度網頁,右鍵–檢查,會看到右側彈出html的代碼。
鼠標放在右側代碼上移動可看到左側元素變藍,說明此處代碼對應的是變藍的元素,就可以找到name啦,這裏要注意上面的form是表單,不是元素,下面的input纔是搜索欄對應的name。