1. 程式人生 > >python+selenium環境搭建

python+selenium環境搭建

web image all bubuko org man ngram 郵箱 附加

我使用的是win10系統,將要搭建的版本分別是:python版本-3.7.0,selenium版本-3.14.1,火狐瀏覽器版本-61.0.2,geckodriver版本-0.21.0 現在開始搭建環境

第一步、下載Python,安裝Python,並添加到環境變量(我下載的是python3.7.0 紅框只是舉個栗子)

官網下載地址:https://www.python.org/downloads/windows/

技術分享圖片

技術分享圖片

安裝完後,打開運行,輸入cmd,輸入python,出現如下圖所示表示安裝成功

技術分享圖片

如果安裝時沒有勾選Add Python3.7 to PATH,需要手動添加到環境變量

在桌面右鍵我的電腦,點擊屬性,選擇高級系統設置,點擊環境變量,選擇Path新建,把pathon路徑添加進去,下面是我的電腦安裝的路徑

C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts\  #這個是為了方便在cmd使用pip安裝,而不用切換到pip所在的目錄

C:\Users\Administrator\AppData\Local\Programs\Python\Python37\

第二步、安裝selenium,輸入pip install selenium(pip install selenium==3.0.1,可以下載指定版本的selenium),回車

技術分享圖片

這裏提示讓更新pip版本,可以按照提示所說的更新,輸入:python -m pip install --upgrade pip

輸入pip show seleium,可以查看安裝的selenium的版本,如下圖

技術分享圖片

第三步、下載火狐瀏覽器並配置驅動

火狐瀏覽器直接官網下載最新的,如果不想用最新的則可以到這個網站下載歷史版本:http://ftp.mozilla.org/pub/firefox/releases/

選擇想要下載的版本--選擇win64--選擇zh-CN/,進行下載(註意:把火狐瀏覽器的自動更新關掉,避免火狐瀏覽器自動更新後驅動不兼容的問題)

下載驅動文件,官網下載地址:https://github.com/mozilla/geckodriver/releases/

技術分享圖片

把下載的文件放到python的安裝目錄,如下圖(當然,也可以放在別的目錄裏,但是必需要把驅動所在的目錄添加到環境變量)

技術分享圖片

(打開cmd,輸入geckodriver -V查看驅動版本)

驗證環境:打開cmd,輸入以下代碼

python

from selenium import webdriver

bro = webdriver.Firefox()

技術分享圖片

瀏覽器正常打開

第四步、安裝Pycharm,並激活

鏈接: https://pan.baidu.com/s/1_CLo_CUC9c8lpZyWQkKjLA 提取碼: 6mx8

技術分享圖片

安裝完後,打開輸入激活碼並進行激活,pycharm激活碼鏈接:https://blog.csdn.net/u013066730/article/details/56966966

技術分享圖片技術分享圖片

點擊創建新項目,到下圖的頁面

技術分享圖片

至此,環境搭建完畢。

這裏說一下踩到的雷:

剛開始搭建環境使用的版本分別是:selenium -3.14.0  geckodriver-0.11.1  Firefox-47.0.2

在運行一段代碼時

ActionChains(bro).move_to_element(ele).perform()#使鼠標移動到指定元素

報錯:actions did not match a known command 

查詢百度後說是火狐和geckodriver的一個bug,更新下火狐和geckodriver的版本即可

另外firebug已經內置到火狐50.0以上的版本,所以查看頁面元素可以直接右上角點擊三條橫杠,選擇web開發者點擊查看器查看頁面元素

如果是火狐50.0以下版本,則需要下載firebug組件,火狐瀏覽器點擊選項在附加組件管理裏,搜索框輸入firebug下載

下面是一個百度登陸退出的例子:

技術分享圖片
#coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import os

browser = webdriver.Firefox()
#browser.minimize_window()#瀏覽器最小化
browser.maximize_window()#將瀏覽器最大化顯示。調用瀏覽器假如不是全屏,也不會影響腳本的執行
browser.get("https://www.baidu.com")
browser.implicitly_wait(8)#智能等待8秒
browser.find_element_by_css_selector("#u1 > a[name=‘tj_login‘]").click()#點擊登錄
time.sleep(2)
browser.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click()#點擊用戶名登錄
time.sleep(2)
user = browser.find_element_by_id("TANGRAM__PSP_10__userName").get_attribute("placeholder")#獲取節點屬性的值
assert user=="手機/郵箱/用戶名"#斷言屬性的值等於引號裏的值
browser.find_element_by_id("TANGRAM__PSP_10__submit").click()#不輸入用戶名直接點擊登錄按鈕
try:
    msg = browser.find_element_by_id("TANGRAM__PSP_10__error").text#獲取當前元素的屬性值
    assert msg == "請您輸入手機/郵箱/用戶名"#assert斷言,msg等等與引號中的值
    #print("出現提示 :%s"%msg)#打印msg信息
    with open("loger.txt", "a+",encoding="utf-8") as f:#loger.txt文件若不存在就創建,並設置utf-8編碼
        print(msg,file=f)#把錯誤信息追加到log文件
except Exception:#Exception是常規錯誤的基類,也可以不帶任何異常類型
    print("未出現提示")
browser.find_element_by_id("TANGRAM__PSP_10__userName").clear()# 清空用戶名
browser.find_element_by_id("TANGRAM__PSP_10__userName").send_keys("xxx")#輸入用戶名
browser.find_element_by_id("TANGRAM__PSP_10__password").send_keys("xxx")#輸入登錄密碼
browser.find_element_by_id("TANGRAM__PSP_10__submit").click()#點擊登錄按鈕
time.sleep(10)
ele = browser.find_element_by_css_selector("span.user-name")
ActionChains(browser).move_to_element(ele).perform()#移動鼠標到用戶名
time.sleep(2)
browser.find_element_by_link_text("退出").is_displayed()
browser.find_element_by_link_text("退出").click()
time.sleep(5)
browser.find_element_by_link_text("確定").click()
time.sleep(3)
print(browser.title,file=f)
value = browser.find_element_by_css_selector("#u1 > a[name=‘tj_login").text
if value=="登錄":
    print("測試通過",file=f)
browser.quit()
View Code

python+selenium環境搭建