1. 程式人生 > 其它 >UI自動化(一)

UI自動化(一)

一、Selenium

Selenium是非常優秀的WEB(UI)自動化測試框架;selenium=WevbDriver+Selenium

最新的版本是Selenium4.x

Selenium支援主流的瀏覽器自動化測試,具體是Chrome,IE,Firefox等瀏覽器

Selenium也是支援主流的開發語言,如Python,Java,Net,PHP

二、環境搭建

1、google瀏覽器

A、安裝Selenium的庫,命令為:pip3 install selenium

B、按照Google瀏覽器

C、按照Google瀏覽器驅動

2、Chrome瀏覽器

A、安裝Selenium的庫,命令為:pip3 install selenium

B、按照Chrome瀏覽器

C、按照Chrome瀏覽器驅動

3、安裝Chrome瀏覽器驅動

A、檢視Chrome瀏覽器版本;

B、到淘寶源下載與瀏覽器匹配的Driver;

C、下載成功後,進行解壓,並且以管理員身份執行;

D、把這個driver放到Python的安裝目錄下。

4、具體安裝步驟

A、檢視瀏覽器版本號


B、搜尋淘寶源(網址為:https://registry.npmmirror.com/binary.html?path=chromedriver/)


C、選擇距版本最接近的版本,點選進入,找到win檔案,點選下載,得到壓縮檔案chromedriver_win32.zip

D、下載成功後解壓,執行該檔案chromedriver.exe。

E、執行成功後,將該檔案複製入python-3資料夾裡(python環境檔案裡)

 

三、WEB自動化測試(理論)

1、有關執行錯誤的問題

如果測試過程中出現問題,則是以下兩點原因:

A、安裝版本和瀏覽器版本不符合

B、安裝環境有問題

2、有關面試問題

css與xpath的區別

css選擇是依據頁面的資料樣式定位的,有標籤選擇, 類選擇, id選擇, 或者他們的交併集, 除此之外沒有其他的輔助元素了;

而xpath是路徑表示式,所有元素和內容都可以成為路徑的一部分.

兩種定位方式功能基本一致, 但是xpath明顯更強大, 只是xpath寫起來較複雜,css寫起來容易些

3、元素屬性(重點)

元素屬性的方法有以下幾種:

ID = "id":ID是不能為1的
NAME = "name"
CLASS_NAME = "class name"
XPATH = "xpath"
CSS_SELECTOR = "css selector"
LINK_TEXT = "link text":超連結
PARTIAL_LINK_TEXT = "partial link text":超連結,但是模糊搜尋
TAG_NAME = "tag name"

注意:

操作瀏覽器是通過webdriver進行操作的,而因為webdriver操作瀏覽器的前提是需要定位到被操作的元素屬性,之後就可以對瀏覽器做各種操作

4、查詢元素屬性的值

元素屬性的具體資料需要查詢,如圖所示

5、元素屬性css和xpath

當你使用id,那麼,class_name都定義不到的時候,這時考慮使用css or xpath

其中:

Xpath的兩種型別:

A、Copy full Xpath:/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input

B、Copy Xpath://*[@id="kw"]

css型別(一種)

Copy selector:#kw

6、元素定位的分類

1、單個元素定位

2、多個元素定位

A、多個元素定位指的是元素的屬性都一致,

B、它返回的是列表,那麼這時候可以根據列表的索引來定位元素屬性

注意:

不管是單個元素定位還是多個元素定位,它的方法都是8種,具體見上文

7、多視窗的解決思路

A、先開啟當前頁面

B、然後獲取當前頁面放在一個變數中

C、開啟新的頁面

D、獲取所有頁面並且放在一個變數中

E、迴圈所有頁面,判斷如果不是當前,那麼就是在新的頁面

四、WEB自動化測試(實戰)

字首:類與time的呼叫

import time

from selenium import webdriver

1、測試指定網址

#指定瀏覽器
driver=webdriver.Chrome()
#對webdriver進行例項化,並指定測試網址
driver.get('http://www.baidu.com')
#休眠3秒
time.sleep(3)
#關閉瀏覽器
driver.quit()

2、元素屬性ID

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素id進行定位,並輸入內容‘zhangli’
driver.find_element_by_id('kw').send_keys('zhangli')
time.sleep(3)
driver.quit()

3、元素屬性class_name

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素class_name進行定位,並輸入內容‘zhangli’
driver.find_element_by_class_name('s_ipt').send_keys('zhangli')
time.sleep(3)
driver.quit()

4、元素屬性name

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素name進行定位,並輸入內容‘zhangli’
driver.find_element_by_name('wd').send_keys('zhangli')
time.sleep(3)
driver.quit()

5、元素屬性Xpath

#第一種方法:Xpath
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素Xpath進行定位,並輸入內容‘zhangli’
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('ZHANGLI')
time.sleep(3)
driver.quit()

#第二種方法:fullXpath
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素Xpath進行定位,並輸入內容‘zhangli’
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys('zhangli')
time.sleep(3)
driver.quit()

6、元素屬性css selector

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素css進行定位,並輸入內容‘zhangli’
driver.find_element_by_css_selector('#kw').send_keys('zhangli')
time.sleep(3)
driver.quit()css selector

 7、元素屬性:超連結link_text

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素link_text進行定位,並開啟
driver.find_element_by_link_text('新聞').click()
time.sleep(3)
driver.quit()

8、元素屬性:超連結(模糊)partial_link_text

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#對元素partial_link_text進行定位,並開啟
driver.find_element_by_partial_link_text('圖').click()
time.sleep(3)
driver.quit()

9、元素屬性:tag_name

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#多個元素是呼叫屬性時,需有後綴s
#對元素partial_link_text進行定位,並進行賦值
#提取所有的input,並放入集合裡
tags=driver.find_elements_by_tag_name('input')
#通過索引呼叫第七條資料
tags[7].send_keys('無涯 介面測試')
time.sleep(3)
driver.quit()

10、獲取測試地址:current_url(獲取網址)