1. 程式人生 > 其它 >自動化測試-2.selenium驅動和unittest框架介紹

自動化測試-2.selenium驅動和unittest框架介紹

前篇文章我們已經講了unittest框架和selenium驅動的安裝和介紹,這篇文章,主要是講selenium日常的寫法以及簡單的操作

1.開啟一個頁面,用百度舉例

import unittest
from selenium import webdriver
import time
from selenium.webdriver.common.by import By


class Test(unittest.TestCase):
def setUp(self) -> None:
#這一步的意思,開啟谷歌瀏覽器,通過呼叫webdriver這個類下面的chrmoe()方法開啟瀏覽器,如果是火狐瀏覽器,這裡就改成火狐就行了
# 如果沒有設定驅動的位置,這個括號裡面就需要寫驅動的檔案路徑,注意;C是大寫
self.web = webdriver.Chrome()
#呼叫webdriver下面的get方法,意思開啟網址,括號裡面寫開啟的地址,比如這裡開啟百度
self.web.get('http://www.baidu.com')
#最大化瀏覽器
self.web.maximize_window()
#休眠3秒
time.sleep(3)
def test_1(self): #測試用例寫法
#通過id去定位頁面的元素,send_keys:定位到元素後輸入的內容
#self.web.find_element_by_id("wd").send_keys("test")
#上面是selenium4以前的寫法,現在已經不推薦了,要改成下面這種寫法
self.web.find_element(By.ID,"kw").send_keys("test")
time.sleep(1)
self.web.find_element(By.ID,"su").click()
time.sleep(2)
def tearDown(self) -> None: #後置條件
#退出
self.web.quit()

if __name__ =="__main__":
#unitest.main()函式用來測試 類中以 test 開頭的測試用例
unittest.main()
執行結果如下

2.常用寫法

1.連線瀏覽器:這裡用谷歌瀏覽器舉例

web = webdriver.Chrome() #如果是火狐換成火狐就行了,webdriver.Firefor()即可

 2.開啟網址

    web.get()  #括號裡面輸入要訪問的地址

3.最大化瀏覽器

self.web.maximize_window()

4.元素定位

selenium自動化的原理,就是通過操作頁面的元素來模擬手工的操作,所以,元素定位是我們必須要掌握的內容

selenium總共有8種元素定位,分別是是 id,name,tag(太閣)(元素標籤定位),class(元素型別定位),xpath,css,link,link_text,常用的只有前面六種,所以這裡只講前面六種

id與name:id與name都是前端寫頁面所新增的唯一標識,通過id或者name就可以精準定位到我們要操作的元素,這裡用百度舉例

寫法如下:

self.web.find_element_by_id("kw")
self.web.find_element_by_name("wd")
#上面是selenium4以前的寫法,現在已經不推薦了,要改成下面這種寫法
self.web.find_element(By.ID,"kw")
self.web.find_element(By.name,"wd")
class定位: class 屬性就用來標誌著元素 型別,通過元素的型別來找元素,這裡還是用百度舉例,可以看到這裡有class

 寫法如下:

  如下圖

所有的植物元素都有個class屬性 值為 plant。

所有的動物元素都有個class屬性 值為 animal。 如果我們要選擇 所有的 動物, 就可以使用方法 find_elements(By.CLASS_NAME,"") 注意element後面多了個s class定位: class 屬性就用來標誌著元素 型別,通過元素的型別來找元素 for i in c: print(i.text) 注意直接列印c是列印的全部內容,我們只要文字內容,所以通過 WebElement 物件的 text屬性 可以獲取該元素 在網頁中的文字內容,打印出來就是獅子山羊老虎 注意:element和elements的區別? 使用find_element找的是符合條件的內容,如果沒找到就會報錯, 但是find_elements找的是所有符合的內容,如果沒找到就會返回空列表,而不會報錯

 tag定位:通過元素的標籤進行定位,和class差不多

find_elements(By.TAG_NAME,"div"):這句話就是找到所有div標籤相關的東西

for i in c: print(i.text) 列印所有的div相關的文字 # 根據 tag name 選擇元素,返回的是 一個列表 # 裡面 都是 tag 名為 div 的元素對應的 WebElement物件 elements = wd.find_elements(By.TAG_NAME,"div") # 取出列表中的每個 WebElement物件,打印出其text屬性的值 # text屬性就是該 WebElement物件對應的元素在網頁中的文字內容 for element in elements: print(element.text) webelement物件選擇元素:不僅 WebDriver物件有 選擇元素 的方法, WebElement物件 也有選擇元素的方法。WebElement物件 也可以呼叫 find_elements_by_xxx, find_element_by_xxx 之類的方法 WebDriver 物件 選擇元素的範圍是 整個 web頁面, 而 WebElement 物件 選擇元素的範圍是 該元素的內部。 樣式:span =a.find_element_by_id('container').find_elements_by_tag_name("") 

介於篇幅,xpath和css我們會在下章單獨講解,這章就到這裡結束