selenium webdriver基于Python系列文章 總結 4 元素定位

常用的有以下幾種

id 
name 
class 
name
tag 
name 
link 
text 
partial link text 
xpath 
css selector

分別對應 python webdriver 中的方法為:

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

id\name \ class name \ tag name :
百度搜索框前端代碼(通過firebug查看)

<input  id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
find_element_by_id(‘kw1’) 
find_element_by_name(‘wd’) 
find_element_by_class_name(‘s_ipt’)
 find_element_by_tag_name(‘input’) 

注:頁面上的元素tag name 相同的幾率很高

link\partial link : 百度首頁文字鏈接:

<a  name="tj_news">新 聞</a> 
<a  name="tj_tieba">貼 吧</a> 
<a  name="tj_zhidao">知 道</a> 
find_element_by_link_text(u‘新 聞’) 
find_element_by_partial_link_text(‘新’) 
find_element_by_link_text(u‘貼 吧’) 

注:中文字符串加u 是將中文轉換成unicode,防止編碼問題。

find_element_by_xpath(‘//input[@name='wd']’) find_element_by_xpath(‘//input[@class='s_ipt']’) 
find_element_by_xpath(‘//span[@class='bg s_iptwr']/input’) 
find_element_by_xpath(‘//form[@id='form1']/span/input’) 
find_element_by_xpath(‘/html/body/div/div[4]/div[2]/div/form/span/input’)

css常見語法

css

</form> 
<div class="subdiv">  
<ul id="recordlist">     
<p>Heading</p> 

定位</from>

find_element_by_css_selector(‘from’) 

定位

<div class="subdiv"> find_element_by_css_selector(‘.subdiv’) 
find_element_by_css_selector(‘from+div’) 

定位

<ul id="recordlist"> find_element_by_css_selector(‘#recordlist’) 
find_element_by_css_selector(‘ul#recordlist’) find_element_by_css_selector(‘div>ul’) 

定位

<p>Heading</p> find_element_by_css_selector(‘div>ul’) find_element_by_css_selector(‘div.subdiv > ul > p’) 

webdriver API
瀏覽器最大化:

 maximize_window() 

設置瀏覽器寬、高:

set_window_size(480, 800) 

控制瀏覽器后退,前進:

back() forward() 

瀏覽器最大化

driver.maximize_window() #將瀏覽器最大化顯示 

瀏覽器設置寬高

 driver.set_window_size(800, 600) 

控制瀏覽器前進、后退

driver.get('http://www.baidu.com') #訪問百度首頁 
driver.get(‘http://news.baidu.com’) #訪問新聞頁面 
driver.back() #返回(后退)到百度首頁 
driver.forward() #前進到新聞頁

WebElement接口常用方法:
clear 清除元素的內容
send_keys 在元素上模擬按鍵輸入 (這里需要注意的是,我們一般會在腳本開始聲明代碼的編碼格式為utf-8,所以當我們使用中文字符串操作時,應在字符串前面加小u,進行轉碼標識. send_keys(u“中文內容”)
click 單擊元素,單擊任何可以點擊的元素,文字/圖片連接,按鈕, 下拉按鈕等。
submit 提交表單,提交對象是一個表單
size 返回元素的尺寸
text 獲取元素的文本
get_attribute(name) 獲得屬性值
is_displayed() 設置該元素是否用戶可見

driver.find_element_by_id(“username").clear() 
driver.find_element_by_id(" username ").send_keys("username") 
driver.find_element_by_id(“password").clear() 
driver.find_element_by_id(" password ").send_keys("password") 
driver.find_element_by_id("loginBtn").click() #通過 submit() 來提交表單 
#driver.find_element_by_id("loginBtn").submit() 

ActionChains 類鼠標操作的常用方法:
context_click() 右擊
double_click() 雙擊
drag_and_drop() 拖動
move_to_element() 鼠標懸停在一個元素上
click_and_hold() 按下鼠標左鍵在一個元素上

ActionChains 類鼠標操作的常用方法:

context_click()  右擊 
#引入ActionChains類 
from selenium.webdriver.common.action_chains import ActionChains .... 
#定位到要右擊的元素 
right =driver.find_element_by_xpath("xx") 
#對定位到的元素執行鼠標右鍵操作 
ActionChains(driver).context_click(right).perform() .... 

ActionChains 類鼠標操作的常用方法:

drag_and_drop() 拖動

#引入ActionChains類 
from selenium.webdriver.common.action_chains import ActionChains ... 

#定位元素的原位置 
element = driver.find_element_by_name("xxx") 

#定位元素要移動到的目標位置 
target =  driver.find_element_by_name("xxx") 

#執行元素的移動操作 ActionChains(driver).drag_and_drop(element,target).perform() 


ActionChains 類鼠標操作的常用方法:    
move_to_element()   鼠標懸停 

#引入ActionChains類 
from selenium.webdriver.common.action_chains import ActionChains ... 

#定位元素的原位置 
element = driver.find_element_by_name("xxx") 

#定位元素要移動到的目標位置 
target =  driver.find_element_by_name("xxx") 

#執行元素的移動操作
 ActionChains(driver).drag_and_drop(element,target).perform() 

Keys 類鍵盤操作的常用方法:   
send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)   
send_keys(Keys.SPACE) 空格鍵(Space)   
send_keys(Keys.TAB) 制表鍵(Tab)   
send_keys(Keys.ESCAPE) 回退鍵(Esc)   
send_keys(Keys.ENTER) 回車鍵(Enter)   
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)

ctionChains 類鼠標操作的常用方法:
 
move_to_element() 鼠標懸停

#輸入框輸入內容 driver.find_element_by_id("kw1").send_keys("seleniumm") 
time.sleep(3) 

 #刪除多輸入的一個m driver.find_element_by_id("kw1").send_keys(Keys.BACK_SPACE) 
time.sleep(3) 

打印信息(斷言的信息):   
title   返回當前頁面的標題   
current_url   獲取當前加載頁面的URL   
text   獲取元素的文本信息

打印信息(126郵箱):

#獲得前面title,打印 
title = driver.title 
print title 

#獲得前面URL,打印 
now_url = driver.current_url 
print now_url    

#獲得登錄成功的用戶,打印 
now_user=driver.find_element_by_id("spnUid").text 
print now_user 


 腳本中的等待時間: 
sleep():    python提供設置固定休眠時間的方法。 
implicitly_wait():    是webdirver 提供的一個超時等待。
 WebDriverWait():    同樣也是webdirver 提供的方法。 

time.sleep(2)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容