比如說按按鈕、輸入文字等等
好像會這兩個就差不多了?!
那麼就先來個簡單的範例吧:
#------
首先你要import webdriver
from selenium import webdriver
然後是跟程式說你的chromedriver.exe放在哪,然後你想開起的網頁
chrome_path = "C:\Selenium\chromedriver.exe"
web = webdriver.Chrome(chrome_path)
web.get('http://www.google.com.tw/')
比如說我們想在google搜尋中輸入"HiHi"並送出所以我們得先找到輸入框
inputBox = web.find_element_by_name("q") #find input
while inputBox is None: # waiting change url
inputBox = web.find_element_by_name("q") #find input box
inputBox.send_keys("HiHi") #key "hihi"
inputBox.submit() #send out
#------找元件的方法:
還蠻多方法的,這編列出常用的
大家有興趣可以上網找找
基本上我全部用find_element_by_xpath就搞定了~XD
web.find_element_by_id
web.find_element_by_name
web.find_element_by_xpath
關於等待換頁這件事:
是不是換頁了,
可以去找找換頁後的子物件是不是存在
有時使用while 判斷是不是物件存在時好像會出錯
後來還是乖乖的使用了selenium的等待方法
先import
from selenium.webdriver.common.by import By #這個我用來抓當前頁面的URL
from selenium.webdriver.support.ui import WebDriverWait #這個可以用來判斷物件存不存在
from selenium.webdriver.support import expected_conditions as EC
import time #這個可以用來直接指定要等幾秒
-保險起見,先等個幾秒吧!:time.sleep
實作時
遇到了切頁時會跳提示(登入成功、已登出等等)
導致點擊按鈕腳本失效
time.sleep(0.1)
-換頁判斷:current_url
先記錄是當前頁面
然後換頁時比對url是不是一樣
不一樣時代表已經切頁
部分程式碼:
while now_url == web.current_url:
time.sleep(0.1)
now_url = web.current_url
web.get(now_url)
-是不是已經切頁完畢:WebDriverWait
比如切頁後要做登入的部分
可以判斷登入鈕是不是已經存在
部分程式碼:
login_btn_xpath = '按鈕的xpath'
login_btn = WebDriverWait(web, 30).until(
EC.presence_of_element_located((By.XPATH,login_btn_xpath))
)
這樣應該蠻夠用了!
才疏學淺資質駑鈍,
有缺有誤有漏歡迎指教,
感謝觀看~~
沒有留言:
張貼留言