python Selenium 常見操作 元素定位
一. 定位元素方法
- find_element_by_id
- find_element_by_name
- find_element_by_xpath
- find_element_by_link_text
- find_element_by_partial_link_text
- find_element_by_tag_name
- find_element_by_class_name
- find_element_by_css_selector
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
除了上面給出的公共方法,這裡也有兩個在頁面物件定位器有用的私有方法。這兩個私有方法是find_element和find_elements。
常用方法是通過xpath相對路徑進行定位,同時CSS也是比較好的方法。舉例:
- <html>
- <body>
- <formid="loginForm">
-
<
- <inputname="password"type="password"/>
- <inputname="continue"type="submit"value="Login"/>
- <inputname="continue"type="button"value="Clear"/>
- </form>
- </body>
- <html>
-
username = driver.find_element_by_xpath(
- username = driver.find_element_by_xpath("//form[@id='loginForm']/input[1]")
- username = driver.find_element_by_xpath("//input[@name='username']")
[2] 通過id=loginForm值的form元素找到第一個input子元素
[3] 屬性名為name且值為username的第一個input元素
二. 操作元素方法
在講述完定位物件(locate elements)之後我們需要對該已定位物件進行操作,通常所有的操作與頁面互動都將通過WebElement介面,常見的操作元素方法如下:
- clear 清除元素的內容
- send_keys 模擬按鍵輸入
- click 點選元素
- submit 提交表單
舉例自動訪問FireFox瀏覽器自動登入163郵箱。
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- import time
- # Login 163 email
- driver = webdriver.Firefox()
- driver.get("http://mail.163.com/")
- elem_user = driver.find_element_by_name("username")
- elem_user.clear
- elem_user.send_keys("15201615157")
- elem_pwd = driver.find_element_by_name("password")
- elem_pwd.clear
- elem_pwd.send_keys("******")
- elem_pwd.send_keys(Keys.RETURN)
- #driver.find_element_by_id("loginBtn").click()
- #driver.find_element_by_id("loginBtn").submit()
- time.sleep(5)
- assert"baidu"in driver.title
- driver.close()
- driver.quit()
PS:如果需要輸入中文,防止編碼錯誤使用send_keys(u"中文使用者名稱")。
三. WebElement介面獲取值
通過WebElement介面可以獲取常用的值,這些值同樣非常重要。
- size 獲取元素的尺寸
- text 獲取元素的文字
- get_attribute(name) 獲取屬性值
- location 獲取元素座標,先找到要獲取的元素,再呼叫該方法
- page_source 返回頁面原始碼
- driver.title 返回頁面標題
- current_url 獲取當前頁面的URL
- is_displayed() 設定該元素是否可見
- is_enabled() 判斷元素是否被使用
- is_selected() 判斷元素是否被選中
- tag_name 返回元素的tagName
舉例程式碼如下:
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- import time
- driver = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")
- driver.get("http://www.baidu.com/")
- size = driver.find_element_by_name("wd").size
- print size
- #尺寸: {'width': 500, 'height': 22}
- news = driver.find_element_by_xpath("//div[@id='u1']/a[1]").text
- print news
- #文字: 新聞
- href = driver.find_element_by_xpath("//div[@id='u1']/a[2]").get_attribute('href')
- name = driver.find_element_by_xpath("//div[@id='u1']/a[2]").get_attribute('name')
- print href,name
- #屬性值: http://www.hao123.com/ tj_trhao123
- location = driver.find_element_by_xpath("//div[@id='u1']/a[3]").location
- print location
- #座標: {'y': 19, 'x': 498}
- print driver.current_url
- #當前連結: https://www.baidu.com/
- print driver.title
- #標題: 百度一下, 你就知道
- result = location = driver.find_element_by_id("su").is_displayed()
- print result
- #是否可見: True
四. 滑鼠操作
在現實的自動化測試中關於滑鼠的操作不僅僅是click()單擊操作,還有很多包含在ActionChains類中的操作。如下:
- context_click(elem) 右擊滑鼠點選元素elem,另存為等行為
- double_click(elem) 雙擊滑鼠點選元素elem,地圖web可實現放大功能
- drag_and_drop(source,target) 拖動滑鼠,源元素按下左鍵移動至目標元素釋放
- move_to_element(elem) 滑鼠移動到一個元素上
- click_and_hold(elem) 按下滑鼠左鍵在一個元素上
- perform() 在通過呼叫該函式執行ActionChains中儲存行為
- import time
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.common.action_chains import ActionChains
- driver = webdriver.Firefox()
- driver.get("http://www.baidu.com")
- #滑鼠移動至圖片上 右鍵儲存圖片
- elem_pic = driver.find_element_by_xpath("//div[@id='lg']/img")
- print elem_pic.get_attribute("src")
- action = ActionChains(driver).move_to_element(elem_pic)
- action.context_click(elem_pic)
- #重點:當右鍵滑鼠點選鍵盤游標向下則移動至右鍵選單第一個選項
- action.send_keys(Keys.ARROW_DOWN)
- time.sleep(3)
- action.send_keys('v') #另存為
- action.perform()
- #獲取另存為對話方塊(失敗)
- alert.switch_to_alert()
- alert.accept()
效果如下圖所示,通過xpath定位到圖片位置並右擊滑鼠,在彈出的選單中選擇“另存為圖片”。但是如何點選“另存為對話方塊”的“儲存”按鈕是個難點,目前剛學習階段,境界沒到無法解決。原因:
WebDriver cannot directly interact with dialog windows this is because dialog windows are the domain of the operating system
and not the webpage.
五. 鍵盤操作
參考:http://selenium-python.readthedocs.org/api.html
前面講述了滑鼠操作,現在講述鍵盤操作。在webdriver的Keys類中提供了鍵盤所有的按鍵操作,當然也包括一些常見的組合鍵操作如Ctrl+A(全選)、Ctrl+C(複製)、Ctrl+V(貼上)。更多鍵參考官方文件對應的編碼。
- send_keys(Keys.ENTER) 按下回車鍵
- send_keys(Keys.TAB) 按下Tab製表鍵
- send_keys(Keys.SPACE) 按下空格鍵space
- send_keys(Kyes.ESCAPE) 按下回退鍵Esc
- send_keys(Keys.BACK_SPACE) 按下刪除鍵BackSpace
- send_keys(Keys.SHIFT) 按下shift鍵
- send_keys(Keys.CONTROL) 按下Ctrl鍵
- send_keys(Keys.ARROW_DOWN) 按下滑鼠游標向下按鍵
- send_keys(Keys.CONTROL,'a') 組合鍵全選Ctrl+A
- send_keys(Keys.CONTROL,'c') 組合鍵複製Ctrl+C
- send_keys(Keys.CONTROL,'x') 組合鍵剪下Ctrl+X
- send_keys(Keys.CONTROL,'v') 組合鍵貼上Ctrl+V
這裡使用的例子參考蟲師的書籍《selenium2 Python自動化測試》,推薦該書給大家。程式碼還是非常有意思的,大家自己去感受下吧~
- #coding=utf-8
- import time
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- driver = webdriver.Firefox()
- driver.get("http://www.baidu.com")
- #輸入框輸入內容
- elem = driver.find_element_by_id("kw")
- elem.send_keys("Eastmount CSDN")
- time.sleep(3)
- #刪除一個字元CSDN 回退鍵
- elem.send_keys(Keys.BACK_SPACE)
- elem.send_keys(Keys.BACK_SPACE)
- elem.send_keys(Keys.BACK_SPACE)
- elem.send_keys(Keys.BACK_SPACE)
- time.sleep(3)
- #輸入空格+"部落格"
- elem.send_keys(Keys.SPACE)
- elem.send_keys(u"部落格")
- time.sleep(3)
- #ctrl+a 全選輸入框內容
- elem.send_keys(Keys.CONTROL,'a')
- time.sleep(3)
- #ctrl+x 剪下輸入框內容
- elem.send_keys(Keys.CONTROL,'x')
- time.sleep(3)
-
相關推薦
python Selenium 常見操作 元素定位
一. 定位元素方法 find_element_by_idfind_element_by_namefind_element_by_xpathfind_element_by_link_textfind_element_by_partial_link_textfind_ele
【轉載】【selenium+Python WebDriver】之元素定位
driver 轉載 ref tails selenium html http url 定位 總結: 感謝“煜妃”《Selenuim+Python之元素定位總結及實例說明》和“Huilaojia123”《selenium WebDriver定位元素學習總結》的文章【轉載】【s
初學者的Selenium自動化測試指南,基於Python(一)——元素定位
WebDriver是Selenium體系中設計出來操作瀏覽器的一套API,可支援多種程式語言,對於Python來說,可以將WebDriver視為Python的一個用於實現Web自動化的第三方類庫。WebDriver一共提供了八種元素定位方法,我們以百度輸入框和百度搜
Selenium+Python之八種元素定位方法
如有疑問,可以留言或私信問我喲~ 一、id定位 driver.find_element_by_id("txtUaserName").send_keys("容音@lily") 二、name定位 driver.find_element_by_name("username"
Selenium(2): DOM元素定位、操作
DOM 元素定位 定位過程 WebDriver物件的findElement函式定義一個Web頁面元素;findElements方法可以定位頁面的多個元素;使用WebElement物件來儲存定位的元
python+selenium基礎之XPATH定位
方式 沒有 基礎 元素 w3c com pytho round con 世界上最遠的距離大概就是明明看到一個頁面元素矗在那裏,但是我卻定位不到!! selenium定位元素的方法有很多種,像是通過id、name、class_name、tag_name、link_text
python+selenium常見問題解決方式
exce driver class windows OS alt har ror clas 1、啟動不了瀏覽器,報錯如下: ============================= ERRORS =============================Traceback
selenium 訊息框元素定位處理
以下內容來自於“風少”的部落格 《元素定位:selenium訊息框處理 (alert、confirm、prompt)》 基礎普及 alert對話方塊 。細分三種,Alert,prompt,confirm 1. alert() 彈出個提示框 (確定) 警告訊息框 alert 方法有一個引數
三、Appium-python-UI自動化之元素定位uiautomatorviewer
uiautomatorviewer是android-sdk自帶的一個元素定位工具,非常簡單好用,使用uiautomatorviewer,可以檢查一個應用的UI來檢視應用的佈局和元件以及相關的屬性。 一、執行uiautomatorviewer.bat 1.開啟F:\Android\and
selenium + java 列表元素定位 新聞列表為例
想要定位列表中的元素 需要用到<List>集合 如圖,紅框標註處,是要定位的元素 如何實現 程式碼如下 : public class FinElements { public static void main
Appium+Python 自動化-appium常用元素定位方法
1. ID定位 # resourceId屬性的方法 driver.find_element_by_id('com.lizi.app:id/setting_imageView').click() #以accessibility_id進行定位,對Android而言,就是co
selenium基礎:元素定位之css_selector和軸定位
selenium提供了非常豐富的元素定位方式,下面一張思維導圖是我根據工作經驗總結的定位元素方式,還是比較全的 本篇部落格重點介紹css_selector定位和軸定位 一 軸定位 軸名稱 ancestor:祖先節點,
python+selenium常見例項-如何從TXT文件中讀取使用者資訊
1、分開成每一條,然後轉化成字典 confg=open的檔案 for line in config: 每行進行分割---------例如下面,根據=分割,並且列表解析,防止有回車 result=【ele.strip( ) for ele in line.split
selenium+java二元素定位
頁面元素定位是自動化中最重要的事情, selenium Webdriver 提供了很多種元素定位的方法。 測試人員應該熟練掌握各種定位方法。 使用最簡單,最穩定的定位方法。 自動化測試步驟 定位元素》操作元素》驗證操作結果》記錄測試結果 在自動化測試過程中, 測試程式通常的操作頁面元素步驟
python+selenium之封裝元素的方法(封裝查詢元素的方法)
import os import sys import time import unittest from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait
python+selenium-基本操作
時間問題 (1)強制等待 sleep(3) 不管瀏覽器是否載入完,程式都必須等3秒再執行 (2)隱性等待 implicity_wait(6) 若在3秒定位到了元素則繼續執行,若超出6s時間,還沒有定位到元素,就丟擲異常 隱性等待對整個driver的週期都起作用,
selenium+Java頁面元素定位方法
頁面元素定位方法總結 WebDriver物件的findElement函式可以用於定位一個頁面的元素,findElement可以用於定位多個頁面的元素,定位到頁面元素需使用webElement物件進行儲存,以便在測試的過程中繼續使用。 定位方法
Selenium IDE XPath元素定位器
資源推薦: XPath選擇器 XPath 是一門在 XML 文件中查詢資訊的語言,可用來在 XML 文件中對元素和屬性進行遍歷,並且XPath 是 W3C XSLT(Extensible Stylesheet Language Transformations)
python+selenium常見例項-根據日曆進行查詢(上)
一、思路: 1、查詢日曆元素; 2;設定日曆時間; 3、查詢搜尋元素; 4、點選搜尋按鈕; 5、檢視列表元素 6、列印列表中的資訊 7、判斷日期是否正確 二、重難點 1、設定日曆時間 2、列印所查詢的列表中的資訊 三、解決辦法 日曆設定:請參考該連結:https://bl
Python字串常見操作
先初始化一個字串scString scString = "my name is shenchong shen shen" find: scString = "my name is shenchong shen shen" print(scString.find("s