前言
從這篇開始,正式學習selenium的webdriver框架。我們平常說的 selenium自動化,其實它並不是類似於QTP之類的有GUI界面的可視化工具,我們要學的是webdriver框架的API。本篇主要講如何用Python調用webdriver框架的API,對瀏覽器做一些常規的操作,如打開、前進、后退、刷新、設置窗口大小、截屏、退出等操作。
一、打開網站
1.第一步:從selenium里面導入webdriver模塊;
2.打開Firefox瀏覽器(Ie和Chrome對應下面的);
3.打開百度網址;
from selenium import webdriver # 導入模塊 driver = webdriver.Firefox() # 火狐瀏覽器 # driver = webdriver.Chrome() # 谷歌瀏覽器 # driver = webdriver.Ie() # IE瀏覽器 driver.get("https://www.baidu.com/")
二、設置休眠
1.由於打開百度網址后,頁面加載需要幾秒鍾,所以最好等到頁面加載完成后再繼續下一步操作;
2.導入time模塊,time模塊是Python自帶的,所以無需下載;
3.設置等待時間,單位是秒(s),時間值可以是小數也可以是整數;
from selenium import webdriver import time # 導入時間模塊 driver = webdriver.Firefox() # 火狐瀏覽器 driver.get("https://www.baidu.com/") time.sleep(1) # 設置休眠時間(秒),也可以為小數
三、頁面刷新
1.有時候頁面操作后,數據可能沒及時同步,需要重新刷新;
2.這里可以模擬刷新頁面操作,相當於瀏覽器輸入框后面的刷新按鈕;
from selenium import webdriver import time driver = webdriver.Firefox() # 火狐瀏覽器 driver.get("https://www.baidu.com/") time.sleep(1) # 設置休眠時間(秒) driver.refresh() # 刷新操作
四、前進和后退
1.當在一個瀏覽器打開兩個頁面后,想返回上一頁面,相當於瀏覽器左上角的左箭頭按鈕;
2.返回到上一頁面后,也可以切換到下一頁,相當於瀏覽器左上角的右箭頭按鈕;
from selenium import webdriver import time driver = webdriver.Firefox() # 火狐瀏覽器 driver.get("https://www.baidu.com/") time.sleep(5) # 設置休眠時間(秒) driver.get("https://www.hao123.com/") time.sleep(5) # 設置休眠時間(秒) driver.back() # f返回上一頁 driver.forward() # 下一頁
五、設置窗口大小
1.可以設置瀏覽器窗口大小,如設置窗口大小為手機分辨率540*960;
2.也可以最大化窗口;
from selenium import webdriver import time driver = webdriver.Firefox() # 火狐瀏覽器 driver.get("https://www.baidu.com/") time.sleep(5) # 設置休眠時間(秒) driver.set_window_size(540, 960) # 設置窗口大小 driver.maximize_window() # 窗口最大化
六、退出
1.退出有兩種方式,一種是close;另外一種是quit;
2.close用於關閉當前窗口,當打開的窗口較多時,就可以用close關閉部分窗口;
3.quit用於結束進程,關閉所有的窗口;
4.最后結束測試,要用quit。quit可以回收c盤的臨時文件;
from selenium import webdriver import time driver = webdriver.Firefox() # 火狐瀏覽器 driver.get("https://www.baidu.com/") time.sleep(5) # 設置休眠時間(秒) driver.close() # 關閉當前窗口 driver.quit() # 退出瀏覽器
七、鼠標事件操作
1.鼠標不僅僅可以點擊(click),鼠標還有其它的操作,如:鼠標懸停在某個元素上,鼠標右擊,鼠標按住某個按鈕拖到;
2.鼠標事件需要先導入模塊:“from selenium.webdriver.common.action_chains import ActionChains”
3.鼠標移動懸停: move_to_element
4.執行: perform
# 這里以百度頁面設置按鈕為例 from selenium.webdriver.common.action_chains import ActionChains from selenium import webdriver driver.get("https://www.baidu.com") # 定位設置元素 sz = driver.find_element_by_link_text("設置") # 鼠標事件:移動操作 ActionChains(driver).move_to_element(sz).perform()
5.除了常用的鼠標懸停事件外,還有:
# 執行: perform # 右擊: context_click() # 雙擊: double_ click() # 拖動: drag_and_drop(source, target) # source:鼠標拖動的源元素。 Target:鼠標釋放的目標元素。
依葫蘆畫瓢,替換上面案例中對應的鼠標事件就可以了。
八、鍵盤事件操作
1.selenium提供了一整套的模擬鍵盤操作事件,一下講了常用的鍵盤事件;
2.模擬鍵盤的操作需要先導入鍵盤模塊:“from selenium.webdriver.common.keys import Keys”
3.模擬回車enter鍵,可以用send_keys(Keys.ENTER);
from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("https://www.baidu.com/") # 定位元素 driver.find_element_by_xpath("//*[@id='kw']").send_keys("文本內容") # 模擬鼠標回車按鍵 driver.find_element_by_xpath("//*[@id='kw']").send_keys(Keys.ENTER)
4.其它常見的鍵盤操作:
1、 F5鍵: send_keys(Keys.F5) 2、 F12鍵: send_keys(Keys.F12) 3、 F1鍵: send_keys(Keys.F1) # F1 ~ F12鍵使用方式一樣 4、 空格鍵(space):send_keys(Keys.SPACE) 5、 回退鍵(Esc): send_keys(Keys.ESCAPE) 6、 回車鍵(Enter):send_keys(Keys.ENTER) 7、 刪除鍵(BackSpace):send_keys(Keys.BACK_SPACE) 8、 制表鍵(Tab):send_keys(Keys.TAB) 9、 全選(Ctel+A): send_keys(Keys.CONTROL, ‘a’) 10、復制(Ctel+C): send_keys(Keys.CONTROL, ‘c’) 11、粘貼(Ctel+V): send_keys(Keys.CONTROL, ‘v’) 12、剪切(Ctel+X): send_keys(Keys.CONTROL, ‘x’)