定位元素方法

2022-07-30 06:15:10 字數 4708 閱讀 1128

一. 定位元素方法

這裡有各種策略用於定位網頁中的元素(locate elements),你可以選擇最適合的方案,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也是比較好的方法。舉例:

定位username元素的方法如下:

username = driver.find_element_by_xpath("//form[input/@name='username']")

username = driver.find_element_by_xpath("//form[@id='loginform']/input[1]")

username = driver.find_element_by_xpath("//input[@name='username']")

[1] 第乙個form元素通過乙個input子元素,name屬性和值為username實現

[2] 通過id=loginform值的form元素找到第乙個input子元素

[3] 屬性名為name且值為username的第乙個input元素

二. 操作元素方法

在講述完定位物件(locate elements)之後我們需要對該已定位物件進行操作,通常所有的操作與頁面互動都將通過webelement介面,常見的操作元素方法如下:

clear 清除元素的內容

send_keys 模擬按鍵輸入

click 點選元素

submit 提交表單

舉例自動訪問firefox瀏覽器自動登入163郵箱。

首先通過name定位使用者名稱和密碼,再呼叫方法clear()清除輸入框預設內容,如「請輸入密碼」等提示,通過send_keys("**")輸入正確的使用者名稱和密碼,最後通過click()點選登入按鈕或send_keys(keys.return)相當於回車登入,submit()提交表單。

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

舉例**如下:

四. 滑鼠操作

在現實的自動化測試中關於滑鼠的操作不僅僅是click()單擊操作,還有很多包含在actionchains類中的操作。如下:

五. 鍵盤操作

參考:前面講述了滑鼠操作,現在講述鍵盤操作。在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("")

#輸入框輸入內容

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)

#輸入框重新輸入搜尋

elem.send_keys(keys.control,'v')

time.sleep(3)

#通過回車鍵替代點選操作

driver.find_element_by_id("su").send_keys(keys.enter)

time.sleep(3)

driver.quit()

csdn的部落格

Python定位元素的方法

通過id定位目標元素 driver.find element by id i1 通過classname定位目標元素 driver.find element by class name c1 通過name屬性定位目標元素 driver.find element by name n1 通過xpath定位...

WebDriver定位元素的方法

本文主要是講解在web頁面中如何定位元素,這是進行自動化操作的前提。我們主要是要做web自動化,通常乙個web頁面上有輸入框 按鈕 文字鏈結 等元素,自動化測試要做的就是模擬滑鼠和鍵盤來操作這些元素,如單擊 輸入 滑鼠懸停等。操作這些元素的前提是要定位它們,就是找到它們的位置,所以下面可以利用web...

定位元素的等待方法

1 顯式等待 newwebdriverwait driver,10 until expectedconditions.presenceofelementlocated by.cssselector css locator 原理 顯式等待,就是明確的要等到某個元素的出現或者是某個元素的可點選等條件,等...