成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這樣教都不會?還得我親自出馬!

開發 后端
如果想操作一個網頁上面的一個元素,無論點擊、輸入、拖拽等等任何操作,第一步就是定義元素。因為每個元素對象又包含很多個屬性,所以我們就能通過這些屬性一項或幾項輕松的找到它。

[[409680]]

本文轉載自微信公眾號「Python技術」,作者派森醬。轉載本文請聯系Python技術公眾號。

上次說到了還有別的方法能找到搜索框嗎?答案是當然有了。而且為了滿足大部分場景,有很多方法可以定位元素。今天就來繼續跟大家一起學習下 Python 如何使用 Selenium 進行自動化操控瀏覽器。

定位元素

如果想操作一個網頁上面的一個元素,無論點擊、輸入、拖拽等等任何操作,第一步就是定義元素。因為每個元素對象又包含很多個屬性,所以我們就能通過這些屬性一項或幾項輕松的找到它。

以下是幾種常用的定位元素的方法:

  • find_element_by_id():通過元素的 id 屬性來定位,這是最常見的定位方式,一般網頁包含的所有元素中,id 屬性是唯一的,定位速度快而且準確,首選推薦。
  • find_element_by_name():通過元素的 name 屬性來定位,這是次要推薦方式,有些元素沒有 id ,但基本都有 name,但可能存在重名。
  • find_element_by_class_name():通過元素的 class 屬性來定位,一般 HTML 中元素都會有 class 用來做樣式描述。
  • find_element_by_link_text():這個是通過 對應的鏈接文本對象來定位的,僅用于文本有超鏈接的時候。
  • find_element_by_partial_link_text():同 find_element_by_link_text() 相似,但可以只是超鏈接文本的一部分。
  • find_element_by_tag_name():可以通過元素的 tag name 來定位,但這個很容易會重復,同時返回多個元素。
  • find_element_by_css_selector():這個是通過 css 來定位的。CSS 是一種樣式表語言,用來渲染元素樣式的,是網頁元素的重要組成部分。
  • find_element_by_xpath():這是一種可以通過 HTML 結構進行定位,可以通過根節點開始一層層定位,找到最終的元素。但這種方式在文檔結構產生變化的時候可能會失效,所以不太推薦。

這么多的定位方法,基本上就能滿足大部分場景的需求了。還有一些其他的方法這里就不再說了。

下面我把這些定位的例子列出來,大家就能知道該如何使用:

  1. // 導入 webdriver 
  2. from selenium import webdriver 
  3.  
  4. // executable_path 用于指定driver存放路徑 
  5. browser = webdriver.Chrome(executable_path='/Users/xx/python/chromedriver'
  6. // 打開百度頁面 
  7. browser.get('https://wwww.baidu.com/'
  8. // 在搜索框內輸入 `python selenium` 并點搜索返回結果 
  9. browser.find_element_by_id("kw").send_keys("python selenium"
  10. // name 屬性定位 
  11. browser.find_element_by_name("wd").send_keys("python selenium"
  12. // class name 屬性定位 
  13. browser.find_element_by_class_name("s_ipt").send_keys("python selenium"
  14. // 鏈接 text 屬性定位 
  15. browser.find_element_by_link_text("關于百度").click() 
  16. // tag name 屬性定位 
  17. browser.find_element_by_tag_name("input").send_keys("python selenium"
  18. // CSS 方式定位 
  19. browser.find_element_by_css_selector("#kw").send_keys("python selenium"
  20. // xpath 方式定位 
  21. browser.find_element_by_xpath("//input[@id='kw']").send_keys("python selenium"
  22. // 點擊 百度一下 按鈕 
  23. browser.find_element_by_id("su").click() 

元素是定位到了,接下來就是看要如何操作元素對象了

操作元素

上面我們說了元素是怎么定位找到的,那定位找到元素以后,我們又能對它進行什么操作呢,下面我就來一個個說下:

  • send_keys():這是最常用的,就是對元素模擬按鍵操作,輸入你參數中傳入的字符串,主要用來操作文本輸入框時使用。
  • click():這個方法也是比較常用的,就是對元素對象進行鼠標單擊操作,主要用來操作按鈕或超鏈接文本時使用。
  • submit():如果是操作表單,則可以調用這個方法進行表單內容提交。
  • clear():如果對象有可以清除的內容,比如文本輸入框,則清除已輸入的內容。
  • text():這個方法主要用來獲取元素的文本內容。

操作實例

好了,上面介紹那么多,現在我們來看一個實際的例子:

讓瀏覽器自動輸入 https://www.jd.com/,打開京東官網,然后搜索 ps5國行,并把搜索出來商品的名稱和金額打印出來。

例子不復雜,我們直接來看代碼:

  1. # 導入庫 
  2. from selenium import webdriver 
  3. import time 
  4.  
  5. # executable_path 用于指定driver存放路徑 
  6. browser = webdriver.Chrome(executable_path='/Users/xx/python/chromedriver'
  7. # 打開京東官網 
  8. browser.get('https://www.jd.com/'
  9.  
  10. # browser.find_element_by_id("kw").send_keys("python selenium"
  11.  
  12. # 獲取輸入框對象 
  13. search = browser.find_element_by_xpath('//*[@id="key"]'
  14.  
  15. # 輸入想要搜索的關鍵詞,如"ps5國行" 
  16. search.send_keys('ps5國行'
  17.  
  18. # 獲取搜索按鈕對象并單擊 
  19. browser.find_element_by_xpath('//*[@id="search"]/div/div[2]/button').click() 
  20.  
  21. # 將滾動條移動到頁面底部,用于加載所有信息 
  22. javascript = "var q=document.documentElement.scrollTop=50000" 
  23. # 執行 javascript 移動滾動條 
  24. browser.execute_script(javascript) 
  25. # 等待3秒,有些異步加載的數據加載慢 
  26. time.sleep(3) 
  27.  
  28. # 通過查看頁面源碼得到金額的 xpath 路徑,并獲取金額  
  29. prices = browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li/div/div[2]/strong/i'
  30. # 通過查看頁面源碼得到商品標題的 xpath 路徑,并獲取商品標題 
  31. names = browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li/div/div[3]/a/em'
  32.  
  33. # 遍歷打印出當前頁所有標題和金額 
  34. for name,price in zip(names,prices): 
  35.     print(name.text.replace('\n',''),price.text) 
  36.  
  37. #退出瀏覽器 
  38. browser.quit() 

代碼中我已經對每一行做了注釋,讓大家能看明白每一行都是做什么的。接下來我們直接運行代碼 python test.py,可以看到瀏覽器自動啟動后,執行相關操作,然后退出,下面是執行中的截圖:

執行完成后,我們可以看到控制臺已經打印出來相應信息:

總結

 

好了,今天我們又介紹了下 selenium 定位元素的多種方法,以及我們找到元素后,可以對它進行什么操作。并寫了一個自動化操作的簡單例子,給大家學習參考,后續還會為大家介紹更多。

 

責任編輯:武曉燕 來源: Python技術
相關推薦

2010-10-13 14:02:38

AndroidMeeGoGoogle

2022-03-27 22:07:35

元宇宙虛擬人IBM

2015-03-16 11:33:16

程序員代碼bug

2017-02-08 19:49:03

內存SSDDRAM

2023-05-16 07:15:11

架構模型對象

2019-12-26 09:56:34

Java多線程內部鎖

2022-09-08 10:29:12

Spring接口

2021-05-21 12:15:09

SpringJava代碼

2021-04-20 09:55:37

Linux 開源操作系統

2020-09-27 06:50:56

Java互聯網注解

2014-12-11 10:01:09

程序員

2010-10-26 11:05:27

霍金

2025-05-26 09:46:08

2017-09-12 14:58:27

大數據計數原理

2017-09-19 15:09:50

大數據計數原理

2017-09-30 08:05:41

大數據計數原理

2019-07-09 13:19:02

微軟瀏覽器Windows

2019-12-17 15:10:21

Python字符串代碼

2017-09-26 15:51:29

大數據計數原理

2017-10-25 16:03:08

大數據計數原理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 丝袜毛片 | 日韩精品在线观看一区二区三区 | 国产乱码久久久久久 | 日本不卡一区 | 欧美在线网站 | 黄免费看| 99久久国产免费 | 国产精品久久久久久婷婷天堂 | 精品一区二区三区四区五区 | 精品国产乱码久久久久久牛牛 | 中文字幕在线网 | 一区二区三区在线免费观看 | 久久av网 | 久久男人天堂 | 国产精品一区三区 | 国产免费观看一级国产 | 成人免费看 | 日本在线免费视频 | 国产综合视频 | 久久久99精品免费观看 | 久久精品欧美一区二区三区不卡 | 一区二区精品 | 日韩一区二 | 性国产xxxx乳高跟 | 91久久国产综合久久 | 欧美激情一区 | 亚洲黄色一区二区三区 | www.亚洲国产精品 | 精品视频在线免费观看 | 91毛片在线看 | 91久色 | 天天色综| 久久lu | 免费毛片网站在线观看 | 精品不卡| 精品国产精品三级精品av网址 | av片在线播放 | 久久精品成人 | 欧美区日韩区 | www.啪啪.com| 久久99精品久久久久久国产越南 |