1. 程式人生 > >selenium(二)查找定位目標 ID XPATH CSS 操作目標

selenium(二)查找定位目標 ID XPATH CSS 操作目標

.com select nav 沒有 百度一 時間 百度搜 css 兩個

簡介:

我們只打開一個頁面是沒有什麽意義的。

盡管你可以get很多次。

selenium可以做的更多,比如找到百度的搜索框,輸入我們要搜索的內容,再用鼠標點擊搜索按鈕,再把搜索結果提取出來……

這篇文章,就是如何找到百度搜索框,輸入內容,點擊搜索。

原來喜歡用firebug,但是停止更新了,新的firefox開發了個什麽Firefox Developer Edition,裝了也不怎麽會用。

教程就用chrome吧。免插件。

一:認識頁面元素

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新聞</a>
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"> <input type="submit" id="su" value="百度一下" class="bg s_btn">

這是百度首頁當中的三個元素,第一行是頂部的新聞鏈結,第二行是搜索框,第三行是搜索按鈕。

二:認識查找元素的方法

selenium 下 webdriver 對象 有兩個方法來幫助我們查找頁面元素

driver.find_element()
driver.find_elements()

find_element是查找一個元素

find_elements是查找多個元素

具體方法有:

driver.find_element_by_id()
driver.find_element_by_name()
driver.find_element_by_xpath()
driver.find_element_by_tag_name()
driver.find_element_by_link_text()
driver.find_element_by_class_name()
driver.find_element_by_css_selector()
driver.find_element_by_partial_link_text()
driver.find_elements_by_id()
driver.find_elements_by_name()
driver.find_elements_by_xpath()
driver.find_elements_by_tag_name()
driver.find_elements_by_link_text()
driver.find_elements_by_class_name()
driver.find_elements_by_css_selector()
driver.find_elements_by_partial_link_text()

個人比較喜歡用xpath,因為可以用很多工具生成,省去了自己分析目標頁面源碼的時間。

三:selenium操作目標

perform
reset_actions
click
click_and_hold
context_click
double_click
drag_and_drop
drag_and_drop_by_offset
key_down
key_up
move_by_offset
move_to_element
move_to_element_with_offset
pause
release
send_keys
send_keys_to_element

雖然有這麽多方法,但是我用的也很少啊。

我只用過click,點擊

send_keys,輸入。

以後用到再說吧。

context_click 右鍵點擊
double_click 雙擊

四:結合起來一起用

from time import sleep
from selenium import webdriver
#定義瀏覽器是firefox
driver=webdriver.Firefox()
#頁面打開百度
driver.get(http://www.baidu.com)
sleep(1)
#使用id查找kw,並輸入 淘寶
driver.find_element_by_id(kw).send_keys(淘寶)
#使用id查找su,並點擊
driver.find_element_by_id(su).click()
sleep(3)
#使用name查找wd,清除內容
driver.find_element_by_name(wd).clear()
#使用name查找wd,輸入python
driver.find_element_by_name(wd).send_keys(python)
#使用css selector 查找#su 並點擊
driver.find_element_by_css_selector("#su").click()
sleep(3)
#這些是使用xpath定位查找。
driver.find_element_by_xpath(//*[@id="kw"]).clear()
driver.find_element_by_xpath(//*[@id="kw"]).send_keys(selenium)
driver.find_element_by_xpath(//*[@id="su"]).click()
sleep(3)
driver.quit()

這段代碼就展示了,使用ID NAME CSS SELECTOR 來定位頁面元素,並且輸入文字,清除文字,點擊

五:獲取css_selector xpath

這個ID, NAME,頁面源碼裏面還好看到,css_selector xpath,可不好復制,其實也是一樣的復制,我是懶人。

1.先講firefox

在目標上點擊右鍵,選擇查看元素

技術分享圖片

下面會彈出查看器,並且有一行或幾行是加了底色的

技術分享圖片

在加了底色的這部分,繼續點右鍵,復制,xpath

技術分享圖片

好了,這就有了xpath參數。可以在這個搜索裏面驗證

技術分享圖片

沒有了firebug,默認的也就提取xpath了。

2,chrome中的操作

也是右鍵點擊,不過chrome叫檢查。

技術分享圖片

彈出的在右側,也有幾行加了背景色。

技術分享圖片

在有背景色這一部分右鍵

技術分享圖片

看到了xpath,還有一個selector 對應的是css_selector

好了,現在我們學會了如何使用瀏覽器來幫助我們找到xpath,css_selector,編寫你的代碼,去網站上轉一轉吧。

selenium(二)查找定位目標 ID XPATH CSS 操作目標