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(獲取網址)