1. 程式人生 > >Python+Selenium筆記(七):WebDriver和WebElement

Python+Selenium筆記(七):WebDriver和WebElement

關閉 tab keys selenium test self. reg selector tor

(一) WebDriver

WebDriver提供許多用來與瀏覽器交互的功能和設置,通過WebDriver的功能和一些方法,來實現與瀏覽器窗口、警告、框架和彈出窗口的交互,它也提供了自動化操作瀏覽器導航欄、設置cookies、截屏等方便我們測試的特性。

(二) WebDriver功能及方法

功能/屬性

簡單說明

current_url

獲取當前頁面的URL地址(driver.current_url)
下面的都是以這種方式,driver指瀏覽器驅動實例。
window_handle
獲取當前窗口的句柄
name
獲取該實例底層的瀏覽器名稱
orientation
獲取當前設備的方位
page_source
獲取當前頁面源代碼
title
獲取當前頁面的標題
window_handles
獲取當前會話裏所有窗口的句柄

方法

簡單說明

close()
關閉當前瀏覽器窗口
back()
後退一步
forward()
前進一步
get(url)
訪問URL並加載網頁到當前的瀏覽器會話
maximize_window()
最大化瀏覽器窗口
quit()
退出當前的驅動實例並關閉所有相關窗口
refresh()
刷新當前頁面
implicitly_wait()
等待時間,單位為秒
set_page_load_timeout()
設置一個頁面完全加載完成的超時等待時間,單位為秒
set_script_timeout()
設置腳本執行的超時時間

(三) WebElement功能及方法

通過WebElement可以實現與網站頁面元素的交互,包括文本框、文本域、按鈕、單選框、多選框、表格、行、列和div等。

功能/屬性

簡單說明

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([email protected])
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()

Python+Selenium筆記(七):WebDriver和WebElement