(一) WebDrivercss
WebDriver提供許多用來與瀏覽器交互的功能和設置,經過WebDriver的功能和一些方法,來實現與瀏覽器窗口、警告、框架和彈出窗口的交互,它也提供了自動化操做瀏覽器導航欄、設置cookies、截屏等方便咱們測試的特性。瀏覽器
(二) WebDriver功能及方法cookie
功能/屬性框架 |
簡單說明測試 |
current_url網站 |
獲取當前頁面的URL地址(driver.current_url) 下面的都是以這種方式,driver指瀏覽器驅動實例。 |
window_handle |
獲取當前窗口的句柄 |
name |
獲取該實例底層的瀏覽器名稱 |
orientation |
獲取當前設備的方位 |
page_source |
獲取當前頁面源代碼 |
title |
獲取當前頁面的標題 |
window_handles |
獲取當前會話裏全部窗口的句柄 |
方法ui |
簡單說明url |
close() |
關閉當前瀏覽器窗口 |
back() |
後退一步 |
forward() |
前進一步 |
get(url) |
訪問URL並加載網頁到當前的瀏覽器會話 |
maximize_window() |
最大化瀏覽器窗口 |
quit() |
退出當前的驅動實例並關閉全部相關窗口 |
refresh() |
刷新當前頁面 |
implicitly_wait() |
等待時間,單位爲秒 |
set_page_load_timeout() |
設置一個頁面徹底加載完成的超時等待時間,單位爲秒 |
set_script_timeout() |
設置腳本執行的超時時間 |
(三) WebElement功能及方法spa
經過WebElement能夠實現與網站頁面元素的交互,包括文本框、文本域、按鈕、單選框、多選框、表格、行、列和div等。code
功能/屬性 |
簡單說明 |
size |
獲取元素大小(例如element.size) 下面都是以這種方式,element指定位的某個元素 |
tag_name |
獲取標籤的名稱 |
text |
獲取元素的文本值 |
方法 |
簡單說明 |
clear() |
清除文本框或文本域的內容 |
click() |
點擊元素 |
get_attribute(name) |
獲取元素的屬性值,name:要獲取的屬性名稱 |
is_displayed() |
檢查元素對於用戶是否可見 |
is_enabled() |
檢查元素是否可用 |
is_selected() |
檢查元素是否被選中,主要用於單選框和複選框 |
send_keys(value) |
輸入文本,value是要輸入的值 |
submit() |
提交表單。若是對元素使用,將會提交該元素所屬的表單 |
value_of_css_property(property_name) |
獲取CSS屬性的值, property_name是CSS屬性的名稱 |
(四) 操做表單、文本框、複選框、單選按鈕
經過WebElement實現與各類HTML控件的自動化交互,例如在一個文本框輸入文本、單擊按鈕、選擇單選框或者複選框、獲取元素的文本及屬性值等。
例如,博客園註冊功能的自動化:
(這裏只是舉個例子哈,直接複製是沒用的,下面的代碼只定位部分字段(郵箱、登陸名和註冊按鈕),並且沒有處理驗證碼,驗證碼部分之後再研究怎麼處理)
1 def test_register_new_user(self): 2 3 #定位並點擊博客園首頁的 註冊 4 5 login_area = self.driver.find_element_by_css_selector('#login_area') 6 7 register = login_area.find_element_by_link_text('註冊') 8 9 register.click() 10 11 #檢查打開的網頁標題是否是'用戶註冊 - 博客園' 12 13 self.assertTrue('用戶註冊 - 博客園' == self.driver.title) 14 15 # 定位註冊頁面各個字段及註冊按鈕 16 17 user_email = self.driver.find_element_by_id('Email') 18 19 user_login_name = self.driver.find_element_by_id('LoginName') 20 21 register_btn = self.driver.find_element_by_id('submitBtn') 22 23 # 檢查字段容許的最大輸入字符與最小輸入字符是否與預期一致 24 25 self.assertEqual('2', user_login_name.get_attribute('data-val-length-min')) 26 27 self.assertEqual('30', user_login_name.get_attribute('data-val-length-max')) 28 29 # 檢查各個字段及按鈕對用戶是否可見及可用 30 31 self.assertTrue(user_email.is_displayed() and user_email.is_enabled()) 32 33 # 輸入用戶信息 34 35 user_email.send_keys('test@163.com') 36 37 user_login_name.send_keys('test') 38 39 # 點擊註冊按鈕 40 41 register_btn.click() 42 43 # 檢查是否顯示註冊成功的提示 44 45 self.assertTrue(self.driver.find_element_by_css_selector('p.txt-title.success-color').text == '註冊成功')
例如,能夠使用下面的方式檢查博客園登陸頁面的複選框是否被選中
1 def test_login(self): 2 3 …省略打開登陸頁面的代碼(這段就不註釋了#) 4 5 automatic_login = self.driver.find_element_by_id('remember_me') 6 7 #檢查登陸頁面複選框,是否默認不被選中 8 9 self.assertFalse(automatic_login.is_selected()) 10 11 #點擊選中複選框 12 13 automatic_login.click()