1. 程式人生 > >打個響指Selenium自動化開啟

打個響指Selenium自動化開啟

最近鬥哥在朋友的影響下,接觸了自動化測試工具中的一個專案:appium自動化測試指令碼。

appium類庫封裝了標準Selenium客戶端類庫,為使用者提供所有常見的JSON格式selenium命令以及額外的移動裝置控制相關的命令,所以在講appium類前先了解下Selenium自動化測試的使用。

其實功能測試自動化跟爬蟲一樣 ,都是要進行元素定位與操作,所以Selenium可以用來爬取資料。

0x00 Selenium簡述

Selenium 是一個用於Web應用程式測試的工具。提供了一系列簡單的API,讓我們使用Selenium WebDriver呼叫 WebDriver的所有功能,Selenium可以直接操作瀏覽器,就像真正的使用者在操作一樣。

0x01 Selenium 環境準備



一、語言選擇

Selenium 支援多種語言開發,如Java、Python、Ruby、PHP、C#、JavaScript等。
鬥哥這裡選擇Python。

python官網(https://www.python.org/)下載對應系統安裝包,python2版本與python3版本都支援Selenium
安裝步驟鬥哥這裡就不介紹,安裝完成後在終端輸入python看到python的安裝的版本資訊。則安裝成功(未發現命令可能要手動新增安裝位置的環境變數)。
 


二、瀏覽器選擇

Selenium支援與多種瀏覽器互動,如Chrome、Firefox、Edge、Safari等
除了火狐瀏覽器原生支援以外,Selenium 要通過瀏覽器驅動來與瀏覽器互動。
Chrome:

https://sites.google.com/a/chromium.org/chromedriver/downloads
下載Chrome驅動需要梯子,無法下載可以在下方留言瀏覽器驅動
Edge:
https://developer.microsoft.com/ ... dge/tools/webdriver
Safari:
https://webkit.org/blog/6900/webdriver-support-in-safari-10
以Chrome為例,下載時都是32位的驅動這個不用在意,下載對應的Chrome版本就行。
 

 


下載完,將這個exe的路徑加入環境變數, 就可以根據驅動連線瀏覽器。
 


新手推薦火狐瀏覽器,不需要驅動。

三、 Selenium安裝

windows的python安裝包已經集成了pip可以直接使用
命令:pip install selenium
下載時指定版本為3.14.1。
 


0x03 Selenium 快速入門

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

# -*-coding:utf-8-*-

 

from selenium import webdriver

 

driver=webdriver.Firefox()

 

# 開啟火狐瀏覽器空白窗體

 

driver.get('https://www.baidu.com')

 

# 啟動瀏覽器並且導航到指定URL

 

driver.close()

 

# 關閉瀏覽器



此時已經控制瀏覽器,並且自動訪問百度。
 



0x04 Selenium 元素定位

當我們要訪問頁面某個功能,某個標籤,就需要在介面找到這些元素。selenium中有一系列以find_開頭的方法,都是用於元素定位。
 

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

通過id定位元素:

 

find_element_by_id(self, id_)

 

find_elements_by_id(self, id_)  返回list

 

通過class定位元素:

 

find_element_by_class_name(self, name)

 

find_elements_by_class_name(self, name)  返回list

 

通過name屬性定位元素:

 

find_element_by_name(self, name)

 

find_elements_by_name(self, name)  返回list

 

通過標籤名定位元素:

 

find_element_by_tag_name(self, name)

 

find_elements_by_tag_name(self, name)  返回list

 

通過連結文字定位元素:

 

find_element_by_link_text(self, link_text) 完全匹配

 

find_element_by_partial_link_text(self, link_text) 部分匹配

 

通過xpath定位元素:

 

find_element_by_xpath(self, xpath)

 

find_elements_by_xpath(self, xpath) 返回list

 

通過css選擇器定位元素:

 

find_element_by_css_selector(self, css_selector)

 

find_elements_by_css_selector(self, css_selector) 返回list



先使用瀏覽器的開發者模式,或者用Firebug等外掛,確定元素位置屬性,再用指令碼實現。
確定了百度的輸入框位置。
 



就可以用方法對定位元素的位置。如:driver.find_element_by_id('kw')

0x05 Selenium 元素操作

定位完就可以對元素做操作,滑鼠點選,輸入文字。

1

2

3

4

5

6

7

clear(self)  清除文字輸入框

 

click(self)  點選元素

 

submit(self)  提交表單

 

send_keys(self, *value)  傳送資訊


 

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

from selenium import webdriver

 

import time

 

from selenium.webdriver.common.keys import Keys

 

driver=webdriver.Firefox()

 

driver.get('https://www.baidu.com')

 

driver.find_element_by_id('kw').send_keys('python')

 

#輸入

 

driver.find_element_by_id('kw').send_keys(Keys.ENTER)

 

#回車



如果執行正常,將會自動執行以下操作:開啟一個火狐瀏覽器,然後開啟百度首頁,在輸入框中輸入“python”然後回車。
 



0x06 小小總結

本期的內容就介紹到這裡啦!下期將帶來appium測試工具的使用,以及appium測試微信小程式的相關介紹。不見不散