Python+Selenium筆記(七):WebDriver和WebElement
阿新 • • 發佈:2018-02-13
關閉 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