Python-selenium - 選擇頁面元素/找物件的幾種常用方式 - 實現網站自動化(瀏覽器自動化) 模擬人為操作
本篇重點要來介紹幾種常用的取得頁面某個物件的方式
這樣才能點選或是輸入啊!
其他通篇教學都使用Xpath (Xpath 用F12複製就好,不用打字很爽)
偏偏舞爺自己遇到的需求最不常使用Xpath...
因為可能要同個網站跑好幾次不同帳號登入,即使登入後看起來是同一個按鈕
但因為動態產生,所以Xpath跟ID會改變...
好啦不廢話
抓取頁面元素
主要介紹我最常用的四種
find_element_by_xpath('')
#推薦在非動態產生的頁面中使用(第一順位)
find_element_by_id('')
#推薦在有id以及不會是動態生成的id狀況下使用(第二順位)
find_element_by_link_text('')
#推薦在顯示文字不會改變時
#動態產生的物件也OK(動態物件第一順位,一般物件第三順位)
find_element_by_name('')
#其他方法都不行,只有name的時候我才考慮
其中的id跟name同樣是用F12去檢查元素
作法幾乎是一模一樣的,這邊用id來做示範
例如google首頁的登入按鈕
可以看到id="gb_70"
若要用id來找
完整的程式碼如下
from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.google.com/') driver.implicitly_wait(6) #等待網頁載入(至多等6秒) sc=driver.find_element_by_id('gb_70') #找到id為gb_70物件並設定為變數sc
sc.click() #對sc點擊 #也可以寫成一行,不一定要先設為變數 #driver.find_element_by_id('gb_70').click()
若要用Xpath來找直接看這篇(點我)!!
若要用頁面上文字來找
我覺得這個真的最快最無腦,文字是固定的時候,真的很喜歡直接用
這次來按google左上角的商店
連F12都省下來了,直接游標把字選起來,複製文字即可
程式碼如下
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.google.com/')
driver.implicitly_wait(6)
driver.find_element_by_link_text('Google 商店').click()
執行就發現會開啟商城啦!
留言
張貼留言