selenium
一種自動(dòng)化測(cè)試工具,可以模擬人來(lái)操作瀏覽器桥滨,執(zhí)行效率有時(shí)候還不如人快窝爪,因?yàn)樾枰獮g覽器頁(yè)面加載完成才能操作,對(duì)網(wǎng)速要求嚴(yán)格齐媒,可以用于重復(fù)性的操作蒲每。
準(zhǔn)備工作
按照對(duì)應(yīng)平臺(tái)下載對(duì)應(yīng)版本谷歌瀏覽器驅(qū)動(dòng)
linux
下載好linux版本對(duì)應(yīng)驅(qū)動(dòng)后
Ubuntu安裝 chromedriver:
將下載的文件移動(dòng)到軟件應(yīng)該呆的目錄去:
sudo mv chromedriver /usr/local/bin/chromedriver
改變用戶執(zhí)行的權(quán)限:
sudo chmod 777 /usr/local/bin/chromedriver
檢驗(yàn)是否正常使用:
chromedriver --version
windows
放在任意環(huán)境變量目錄下就行,一般放python解釋器目錄下
G:\python35\Scripts
python3 安裝selenium
pip install selenium
開始寫代碼
這里分成兩種情況
新網(wǎng)址喻括,本頁(yè)刷新
注意點(diǎn):
這一句會(huì)切換到新url對(duì)象邀杏,如果不寫這句,瀏覽器對(duì)象會(huì)去原來(lái)url頁(yè)面中唬血,找元素操作望蜡,這時(shí)候我們希望操作的元素找不到就會(huì)報(bào)錯(cuò)。
sreach_window=driver.current_window_handle
第二點(diǎn)注意點(diǎn)是在跳轉(zhuǎn)到新頁(yè)面以后要等頁(yè)面加載完畢才能操作不然也會(huì)報(bào)錯(cuò)拷恨,所以在對(duì)新頁(yè)面進(jìn)行操作之前往往需要延時(shí)幾秒等待頁(yè)面加載完畢脖律,具體延時(shí)事件和頁(yè)面加載速度有關(guān)系。
time.sleep(10)
# 此代碼是來(lái)使用百度搜索引擎腕侄,搜索“58同城”小泉,并本頁(yè)刷新進(jìn)入58同城頁(yè)面
import time
from selenium import webdriver
#
driver = webdriver.Chrome()
# 請(qǐng)求百度 鏈接
url = 'http://www.baidu.com'
# 執(zhí)行操作芦疏,打開瀏覽器輸入url
driver.get(url)
# 定位頁(yè)面表單
ele_kw = driver.find_element_by_id('kw')
# 向表單中填入數(shù)據(jù)
ele_kw.send_keys('58同城')
# 定位頁(yè)面搜索按鈕
ele_su = driver.find_element_by_id('su')
# 延時(shí)幾秒確保頁(yè)面加載完畢
time.sleep(1)
sreach_window=driver.current_window_handle
# 點(diǎn)擊“百度一下”按鈕
ele_su.click()
# 延時(shí)幾秒確保頁(yè)面加載完畢
time.sleep(3)
# 找到“58同城”官網(wǎng)的xpath,點(diǎn)擊該標(biāo)簽進(jìn)入
tongcheng = driver.find_element_by_xpath('//*[@id="1"]/h3/a[1]').click()
# 頁(yè)面全加載完畢后會(huì)關(guān)閉瀏覽器
driver.close()
新網(wǎng)址微姊,新標(biāo)簽頁(yè)刷新
注意點(diǎn)
將處理對(duì)象變?yōu)樾聵?biāo)簽頁(yè)面酸茴,否則瀏覽器操作對(duì)象會(huì)找不到要操作頁(yè)面中的元素
driver.switch_to.window(driver.window_handles[-1])
# 此代碼直接進(jìn)入58同城主站,然后代開租房信息柒桑,會(huì)出現(xiàn)一個(gè)新標(biāo)簽頁(yè)弊决,之后會(huì)將處理者切換到新標(biāo)簽頁(yè)
import time
from selenium import webdriver
#
driver = webdriver.Chrome()
# 請(qǐng)求百度 鏈接
url = 'http://www.baidu.com'
# 執(zhí)行操作,打開瀏覽器輸入url
driver.get(url)
# 延時(shí)很多秒確保頁(yè)面加載完畢魁淳,58同城網(wǎng)站實(shí)在是內(nèi)容太多飘诗,多等等
time.sleep(20)
# 將頁(yè)面切換到新出現(xiàn)標(biāo)簽
driver.switch_to.window(driver.window_handles[-1])
sreach_window3=driver.current_window_handle
tongcheng2 = driver.find_element_by_xpath('/html/body/div[3]/div[1]/div[1]/div/div[1]/div[1]/span[1]/a').click()
# 頁(yè)面全加載完畢后會(huì)關(guān)閉瀏覽器
driver.close()