selenium的使用教程2
生活随笔
收集整理的這篇文章主要介紹了
selenium的使用教程2
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. selenium 處理cookie
driver.get_cookies()獲取的是完整的cookie信息!不光有name、value,還有domain等其他信息!
# 把cookie轉(zhuǎn)化為字典 cookies_dict = {cookie[‘name’]: cookie[‘value’] for cookie in driver.get_cookies()}#刪除一條cookie driver.delete_cookie("CookieName")# 刪除所有的cookie driver.delete_all_cookies()2.頁面等待
頁面等待的原因:
如果網(wǎng)站采用了動態(tài)html技術(shù),那么頁面上的部分元素出現(xiàn)時間便不能確定,這個時候就可以設(shè)置一個等待時間,強制要求在時間內(nèi)出現(xiàn),否則報錯。
頁面等待的方法:
time.sleep(10)3.selenium執(zhí)行js代碼
import time from selenium import webdriverdriver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver') driver.get("http://www.itcast.cn/") time.sleep(1)js = 'window.scrollTo(0,document.body.scrollHeight)' # js語句 driver.execute_script(js) # 執(zhí)行js的方法time.sleep(5) driver.quit()4.switch方法切換的操作
4.1 切換窗口的方法如下:
一個瀏覽器肯定會有很多窗口,所以我們肯定要有方法來實現(xiàn)窗口的切換。
# 1. 獲取當前所有的窗口 current_windows = driver.window_handles# 2. 根據(jù)窗口索引進行切換 driver.switch_to.window(current_windows[1])完整代碼:
import time from selenium import webdriverdriver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver') driver.get("https://www.baidu.com/")time.sleep(1) driver.find_element_by_id('kw').send_keys('python') time.sleep(1) driver.find_element_by_id('su').click() time.sleep(1)# 通過執(zhí)行js來新開一個標簽頁 js = 'window.open("https://www.sogou.com");' driver.execute_script(js) time.sleep(1)# 1. 獲取當前所有的窗口 windows = driver.window_handlestime.sleep(2) # 2. 根據(jù)窗口索引進行切換 driver.switch_to.window(windows[0]) time.sleep(2) driver.switch_to.window(windows[1])time.sleep(6) driver.quit()4.2 iframe是html中常用的一種技術(shù),即一個頁面中嵌套了另一個網(wǎng)頁,selenium默認是訪問不了frame中的內(nèi)容的,對應(yīng)的解決思路:
driver.switch_to.frame()在使用selenium登錄qq郵箱的過程中,我們會發(fā)現(xiàn),無法在郵箱的登錄input標簽中輸入內(nèi)容,通過觀察源碼可以發(fā)現(xiàn),form表單在一個frame中,所以需要切換到frame中。
login_frame = driver.find_element_by_id('login_frame') # 定位frame元素 driver.switch_to.frame(login_frame) # 轉(zhuǎn)向到該frame中舉例:模擬登陸qq郵箱
代碼如下:
import time from selenium import webdriverdriver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')url = 'https://mail.qq.com/cgi-bin/loginpage' driver.get(url) time.sleep(2)login_frame = driver.find_element_by_id('login_frame') # 根據(jù)id定位 frame元素 driver.switch_to.frame(login_frame) # 轉(zhuǎn)向到該frame中driver.find_element_by_xpath('//*[@id="u"]').send_keys('1596930226@qq.com') time.sleep(2)driver.find_element_by_xpath('//*[@id="p"]').send_keys('hahamimashicuode') time.sleep(2)driver.find_element_by_xpath('//*[@id="login_button"]').click() time.sleep(2)"""操作frame外邊的元素需要切換出去""" windows = driver.window_handles driver.switch_to.window(windows[0])content = driver.find_element_by_class_name('login_pictures_title').text print(content)driver.quit()4.3 當你觸發(fā)了某個事件之后,頁面出現(xiàn)了彈窗提示,處理這個提示或者獲取提示信息方法如下:
driver.switch_to.alert() # 跟frame一樣的處理方式!5.頁面前進和后退
driver.forward() # 前進 driver.back() # 后退6.selenium的優(yōu)缺點
- selenium能夠執(zhí)行頁面上的js,對于js渲染的數(shù)據(jù)和模擬登陸處理起來非常容易
- selenium由于在獲取頁面的過程中會發(fā)送很多請求,所以效率非常低,所以在很多時候需要酌情使用
總結(jié)
以上是生活随笔為你收集整理的selenium的使用教程2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: selenium的使用教程1
- 下一篇: selenium的使用教程3