selenium操作瀏覽器基本方法
本節主要講如何用Python呼叫webdriver框架的API,對瀏覽器做一些常規的操作,如開啟、休眠、前進、後退、重新整理、設定視窗大小、截圖、退出、在新視窗開啟連結,切換到新視窗等操作,以下以Chrome瀏覽器為例,Firefox和IE類似,此處仍以百度為例。
一、開啟網站
1.從selenium裡面匯入webdriver模組;
2.開啟Chrome瀏覽器;
3.開啟百度網址;
1 # coding:utf-8 2 # 從selenium匯入webdriver 3 from selenium import webdriver 4 5 # 開啟Chrome瀏覽器 6 driver = webdriver.Chrome()7 # 開啟百度 8 driver.get("https://www.baidu.com")
二、設定休眠
由於開啟網址後,如果網路不佳或頁面載入渲染花費時間比較長,導致頁面載入需要幾秒鐘,所以最好是等到頁面載入完成後再繼續下一步操作。
1. 從time模組中匯入sleep方法;
2. 設定等待時間,單位是秒(s),時間值可以是小數也可以是整數;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 # 休眠2秒,引數可以為整數或小數 8 sleep(2)
三、前進和後退
1. 當在一個瀏覽器視窗開啟兩個頁面後,返回上一頁面,即點選瀏覽器左上角的左箭頭按鈕;
2. 返回到上一頁面後,則可切換到下一頁,即點選瀏覽器左上角的右箭頭按鈕;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 driver.get("https://www.python.org/") 9 sleep(2) 10 # 返回上一級 11 driver.back() 12 sleep(2) 13 # 返回下一級 14 driver.forward()
四、頁面重新整理
有時候頁面操作後,資料可能沒及時同步,需要重新重新整理web;所以做自動化需要模擬重新整理web的操作
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 重新整理web頁面 9 driver.refresh()
五、設定視窗大小
設定瀏覽器視窗大小,如設定視窗解析度為500*800,也可以最大最小化視窗。
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 設定視窗解析度為500*800 9 driver.set_window_size(500, 800) 10 sleep(2) 11 # 視窗最大化 12 driver.maximize_window() 13 sleep(2) 14 # 視窗最小化 15 driver.minimize_window()
六、截圖
1. 開啟網站之後,可以對螢幕截圖
2. 截圖後設置制定的儲存路徑+檔名稱+字尾
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 截圖 9 driver.get_screenshot_as_file(r"D:\\picture.png")
七、在新視窗開啟連結
1. 開啟網頁後,也可以重新建立一個視窗;
2. 在新視窗開啟連結;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 在新視窗開啟連結 9 newWin = "window.open('https://www.baidu.com')" 10 driver.execute_script(newWin)
八、切換到新視窗
1. 當網頁中有過個視窗,也可以通過切換控制代碼操作;
2. 通過控制代碼操控不同的視窗;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 newWin = "window.open('https://www.baidu.com')" 9 driver.execute_script(newWin) 10 # 控制代碼切換到新視窗 11 handles = driver.window_handles 12 # driver.switch_to_window(handles[-1])# -1為最新開啟的視窗 13 driver.switch_to_window(handles[0])# 0為第一個開啟的視窗 14 driver.find_element_by_id("kw").send_keys("python")
九、退出
1. 退出有兩種方式,一種是close,另外一種是quit;
2. close用於關閉當前視窗,當開啟的視窗較多時,就可以用close關閉部分視窗;
3. quit用於結束程序,關閉所有的視窗,即關閉當前瀏覽器程序;
4. 最後結束測試,要用quit。quit可以回收c盤的臨時檔案。
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 關閉當前視窗 9 # driver.close() 10 # 關閉當前瀏覽器程序 11 driver.quit()