二 Python-selenium 定位頁面元素

二  對象的定位

2.1 定位單個元素

在自動化的測試中,對象元素的定位和操作是自動化的核心部分,但是對象是定位自動化的基礎,在對象的基礎上,纔可以形成對對象的操作。

webdriver提供了元素定位的方法,常見的有如下的幾種:

id

name

class name

tag name

link text

partial link text

xpath

css selector

分別對應pythonwebdriver的單個方法爲;

find_element_by_id()

find_element_by_name()

find_element_by_class_name()

find_element_by_tag_name()

find_element_by_link_text()

find_element_by_partial_link_text()

find_element_by_xpath()

find_element_by_css_selector()

 

已百度首頁的搜索輸入框爲案例,在搜索輸入框輸入 appium,來分別說明 python webdriver的元素的定位,見百度首頁搜索輸入框的源碼截圖:

<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

id/name/classname/xpath/css selector 定位方法爲:

# 通過id定位

driver.find_element_by_id('kw').send_keys('appium')

# 通過name定位

driver.find_element_by_name('wd').send_keys('appium')

# 通過class name定位

driver.find_element_by_class_name('s_ipt').send_keys('appium')

# 通過xpath定位

driver.find_element_by_xpath(".//*[@id='kw']").send_keys('appium')

# 通過css selector定位

driver.find_element_by_css_selector('#kw').send_keys('appium')

link text/partiallink 的定位百度首頁“新聞”的方法爲:

# 通過link text定位

driver.find_element_by_link_text(u'新聞').click()

# 通過partial link text定位

driver.find_element_by_partial_link_text(u'聞').click()

 

2.2 定位一組元素

在瀏覽器特定的操作中,有時候需要定位一組對象,如下拉框的等,webdriver提供了定位一組元素的方法find_elements。

定位一組對象的方法與定位單個對象的方法雷同,見如下:

find_elements_by_id()

find_elements_by_name()

find_elements_by_class_name()

find_elements_by_tag_name()

find_elements_by_link_text()

find_elements_by_partial_link_text()

find_elements_by_xpath()

find_elements_by_css_selector()

定位一組對象使用的場景一般爲:

1、批量操作

2、另外一種是選取一組對象,在這組對象中定位到具體的對象

2.3 瀏覽器的操作

瀏覽器最大化

Driver.maximize_window()

設置瀏覽器的高,寬

Driver.set_window_size()

控制瀏覽器前進

Driver.forward()

控制瀏覽器後退

Driver.back()

瀏覽器刷新

Driver.refersh()

獲取瀏覽器的title

Driver.title

獲取當前網頁的url

Driver.current_url

獲取當前頁面的源碼

Driver.page_source

獲取執行瀏覽器名稱

Driver.name

如上的代碼示例見如下:

# coding:utf-8

from selenium import webdriver

from time import sleep

driver=webdriver.Firefox()   #  如果選擇Python3.0 則需要添加驅動

# 設置瀏覽器高寬

driver.set_window_size(500,600)

# 瀏覽器最大化

driver.maximize_window()

driver.implicitly_wait(30)

# 訪問百度

driver.get('http://www.baidu.com')

# 刷新

driver.refresh()

# 訪問bing

driver.get('http://www.bing.com')

# 後退

driver.back()

# 前進

driver.forward()

# 獲取瀏覽器的title

print driver.title

# 獲取瀏覽器的URL

print driver.current_url

# 獲取瀏覽器當前頁的源碼

print driver.page_source

# 獲取當前執行的瀏覽器

print driver.name

driver.quit()

2.4 WebElement接口的常用方法

返回元素的尺寸

Driver.size()

獲取元素的文本

Driver.text

獲取屬性值

Driver.get_attribute()

設置改元素是否可見

Driver.is_displayed

複選框或單選框是否勾選

Driver.is_selected()

存儲input編輯框是否編輯

Driver.is_enabled()

清空操作

Driver.clear()

點擊操作

Driver.click()

輸入操作

Driver.send_keys()

******************************如上的代碼示例如下:************************************************************************************

#coding:utf-8

from seleniumimport webdriver

from timeimport sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get('http://www.baidu.com')

login=driver.find_element_by_id('su')

# 獲取元素尺寸

print login.size

# 獲取屬性住

printlogin.get_attribute('type')

# 元素是否可見

print u'是否可見:',login.is_displayed()

# 元素是否可勾選

print u'是否可勾選:',login.is_selected()

# 元素是否可編輯

print u'是否可編輯:',login.is_enabled()

driver.quit()

2.5 百度登錄實例

已百度首頁的百度登錄,退出,來完整的進行演示元素的定位以及api部分的使用,見如下的代碼:

************************************代碼部分*****************************************************************************

# coding:utf-8

from seleniumimport webdriver

from timeimport sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get('http://www.baidu.com')

# 點擊登錄按鈕

driver.find_element_by_link_text(u'登錄').click()

# 輸入賬號

driver.find_element_by_id('TANGRAM__PSP_8__userName').send_keys('baidu account')

# 輸入密碼

driver.find_element_by_id('TANGRAM__PSP_8__password').send_keys('account password')

# 取消自動登錄

driver.find_element_by_id('TANGRAM__PSP_8__memberPass').click()

# 點擊登錄按鈕

driver.find_element_by_id('TANGRAM__PSP_8__submit').click()

# 獲取暱稱

niCheng=driver.find_element_by_xpath(".//*[@id='s_username_top']/span")

text=niCheng.text

niCheng.click()

# 點擊退出按鈕

driver.find_element_by_xpath(".//*[@id='s_user_name_menu']/div/a[5]").click()

# 點擊確定按鈕

driver.find_element_by_xpath(".//*[@id='tip_con_wrap']/div[3]/a[3]").click()

sleep(2)

assert text in u'學習無涯'

driver.quit()

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章