python+selenium Web自動化之獲取網頁元素的基本方法


from selenium import webdriver
#創建WebDriver類型的對象,指明使用谷歌瀏覽器驅動,其中Chrome實質上是一個WebDriver

項目路徑下的類文件說明中有體現,是webdriver的別名

 

 

 
         
wd=webdriver.Chrome(r'D:\chromedriver_win32\chromedriver.exe')
#用get方法打開被測http網站
wd.get('http://www.baidu.com')
#方法1:在被測頁面按F12看開發者工具窗口,在網頁按住Ctrl+移動指針到需要查找的元素,開發者窗口會有相應元素的高亮部分。
#方法2:直接右擊待捕捉元素組件,點擊“檢查”,開發者窗口會有相應元素的高亮部分。


根據組件元素的id值捕捉元素 find_element_by_id
#比如百度的搜索框id為kw,用webdriver定義的對象調用方法find_element_by_id(‘id值’)
element=wd.find_element_by_id('kw') #調用方法send_keys('文本框輸入的內容')在對象元素里輸入內容
element.send_keys('cuiken') #方法同上,調用同上方法查找“搜索”鍵元素的id值
element2=wd.find_element_by_id('su') #調用方法click為點擊id值為su的動作
element2.click('su')

 

根據組件元素的class屬性捕捉元素 find_elements_by_class_name 注:elements為復數形式,若為單數形式,則輸出class類的第一個元素 # 根據 class name 選擇元素,返回的是 一個列表 # 里面 都是class 屬性值為 animal的元素對應的 WebElement對象
elements = wd.find_elements_by_class_name('animal') # 取出列表中的每個 WebElement對象,打印出其text屬性的值 # text屬性就是該 WebElement對象對應的元素在網頁中的文本內容
for element in elements: print(element.text) 如果我們把 elements = wd.find_elements_by_class_name('animal') 去掉一個s ,改為 element = wd.find_element_by_class_name('animal') print(element.text) 那么返回的就是第一個class 屬性為 animal的元素

find_element 和 find_elements 的區別

使用 find_elements 選擇的是符合條件的 所有 元素, 如果沒有符合條件的元素, 返回空列表

使用 find_element 選擇的是符合條件的 第一個 元素, 如果沒有符合條件的元素, 拋出 NoSuchElementException 異常

class有多個類型時
#就像一個 學生張三 可以定義有 多個 類型: 中國人 和 學生 , 中國人 和 學生 都是 張三 的 類型。 #元素也可以有 多個class類型 ,多個class類型的值之間用 空格 隔開,比如
<span class="chinese student">張三</span> #注意,這里 span元素 有兩個class屬性,分別 是 chinese 和 student, 而不是一個 名為 chinese student 的屬性。 #我們要用代碼選擇這個元素,可以指定任意一個class 屬性值,都可以選擇到這個元素,如下 element = wd.find_elements_by_class_name('chinese') #或者 element = wd.find_elements_by_class_name('student') #而不能這樣寫 element = wd.find_elements_by_class_name('chinese student')
根據tag名捕捉元素
# 根據 tag name 選擇元素,返回的是 一個列表 # 里面 都是 tag 名為 div 的元素對應的 WebElement對象
elements = wd.find_elements_by_tag_name('div') # 取出列表中的每個 WebElement對象,打印出其text屬性的值 # text屬性就是該 WebElement對象對應的元素在網頁中的文本內容 for element in elements: print(element.text)

 

通過WebElement對象選擇元素 不僅 WebDriver對象有 選擇元素 的方法, WebElement對象 也有選擇元素的方法。 WebElement對象 也可以調用 find_elements_by_xxx,find_element_by_xxx 之類的方法 WebDriver 對象 選擇元素的范圍是 整個 web頁面, 而 WebElement 對象 選擇元素的范圍是 該元素的內部。 element = wd.find_element_by_id('container') # 限制 選擇元素的范圍是 id 為 container 元素的內部。
spans = element.find_elements_by_tag_name('span') for span in spans: print(span.text) 輸出結果就只有 內層11 內層12 內層21

 

 

 部分轉載自:白月黑羽教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM