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

來源:互聯網
上載者:User

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

 

(一)  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('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()

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.