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

執行就發現會開啟商城啦!


留言