bloggerAds

2017年8月3日 星期四

Selenium基礎使用篇

接下來就介紹一些基礎中的基礎,
比如說按按鈕、輸入文字等等
好像會這兩個就差不多了?!


那麼就先來個簡單的範例吧:
#------
首先你要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))
)

這樣應該蠻夠用了!
才疏學淺資質駑鈍,
有缺有誤有漏歡迎指教,
感謝觀看~~

沒有留言:

張貼留言