本節主要講如何用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()