一、前言
最近問我自動化的人確實有點多,個人突發奇想:想從0開始講解python+selenium實現Web自動化測試,請關注博客持續更新!
這是python+selenium實現Web自動化第四篇博文
二、Selenium前三篇博文地址:
【Selenium01篇】python+selenium實現Web自動化:搭建環境,Selenium原理,定位元素以及瀏覽器常規操作!
【Selenium02篇】python+selenium實現Web自動化:鼠標操作和鍵盤操作!
【Selenium03篇】python+selenium實現Web自動化:元素三類等待,多窗口切換,警告框處理,下拉框選擇
三、Selenium之-文件上傳
通過input標簽實現的上傳功能,可以將其看作是一個輸入框,即通過send_keys()指定本地文件路徑的方式實現文件上傳。
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Time : 2020/4/15 @Author : 公眾號:軟測之家 更多技術干貨,軟測視頻,面試資料請關注! @Contact : 軟件測試技術群:695458161 @License : (C)Copyright 2017-2019, Micro-Circle @Desc : None """ from selenium import webdriver import os driver = webdriver.Chrome('../tools/chromedriver.exe') file_path = "file:///" + os.path.abspath('upfile.html') driver.get(file_path) # 定位上傳按鈕的位置 driver.find_element_by_name('file').send_keys(os.path.abspath('upfile.txt')) driver.quit()

四、Selenium之-Cookie操作
網站為了辨別用戶身份、進行 session 跟蹤而存儲在用戶本地終端上的數據,也可以叫做瀏覽器緩存。webdriver 對 cookie 的常用操作有添加、刪除、讀取。
(1) get_cookies()-----獲得所有的 cookie 信息
(2) get_cookie(name)-----活得 key 值為 name 的 cookie 的信息
(3) add_cookie(cookie_dict)----添加 cookie。"cookie_dict" 指字典對象,必須有 name 和 value 值
(4) delete_cookie(name,optionsString):刪除cookie信息。“name”是要刪除的cookie的名稱,“optionsString”是該cookie的選項,目前支持的選項包括“路徑”,“域”
(5) delete_all_cookies()----刪除所有 cookie 信息
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Time : 2020/4/15 @Author : 公眾號:軟測之家 更多技術干貨,軟測視頻,面試資料請關注! @Contact : 軟件測試技術群:695458161 @License : (C)Copyright 2017-2019, Micro-Circle @Desc : None """ from selenium import webdriver from time import sleep base_url = 'https://www.baidu.com/' browser = webdriver.Chrome('../tools/chromedriver.exe') browser.get(base_url) # 1. 獲取 cookie 信息 cookies = browser.get_cookies() print(cookies) sleep(2) browser.quit() # 2. cookie 寫入 browser.add_cookie( { 'name': 'add-cookie', 'value': 'add-cookie-value' } ) # 遍歷cookies打印cookie信息 for cookie in browser.get_cookies(): print("%s ---> %s" % (cookie['name'], cookie['value'])) sleep(2) browser.quit()

五、Selenium之-調用 JavaScript
對於 webdriver 中無法操作的動作(例如:滾動瀏覽器的側邊欄),可以調用 webdriver 進行瀏覽器的控制。webdriver 提供了execute_script()方法來執行 JavaScript 代碼。
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Time : 2020/4/15 @Author : 公眾號:軟測之家 更多技術干貨,軟測視頻,面試資料請關注! @Contact : 軟件測試技術群:695458161 @License : (C)Copyright 2017-2019, Micro-Circle @Desc : None """ from selenium import webdriver from time import sleep base_url = 'https://www.baidu.com' browser = webdriver.Chrome('../tools/chromedriver.exe') browser.get(base_url) # window.scrollTo()方法用於設置瀏覽器窗口滾動條的水平和垂直位置。方法的第一個參數表示水平的左間距,第二個參數表示垂直的上邊距。 browser.set_window_size(500, 500) browser.find_element_by_id('kw').send_keys('百度') browser.find_element_by_id('su').click() sleep(2) # 通過javascript設置瀏覽器窗口的滾動條位置 js = "window.scrollTo(100, 450);" browser.execute_script(js) sleep(2) browser.quit()

六、Selenium之-窗口截圖
自動化用例是由程序去執行的,因此有時候打印的錯誤信息並不十分明確。如果在腳本執行出錯的時候能對當前窗口截圖保存,那么通過圖片就可以非常直觀地看出出錯的原因。webdriver 提供了截圖函數 get_screenshot_as_file() 來截取當前窗口。
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Time : 2020/4/15 @Author : 公眾號:軟測之家 更多技術干貨,軟測視頻,面試資料請關注! @Contact : 軟件測試技術群:695458161 @License : (C)Copyright 2017-2019, Micro-Circle @Desc : None """ from selenium import webdriver from time import sleep base_url = 'http://www.baidu.com/' browser = webdriver.Chrome('../tools/chromedriver.exe') browser.get(base_url) browser.find_element_by_id('kw').send_keys('python selenium') browser.find_element_by_id('su').click() sleep(2) # 截取當前窗口並指定報錯截圖的位置 # browser.get_screenshot_as_file('ScreenShot/14_screenShot.jpg') browser.get_screenshot_as_file('ScreenShot/14_screenShot.png') browser.quit()

七、Selenium之-關閉窗口
close() 關閉單個窗口
quit() 關閉所有窗口

八、持續更新中請關注
如果你覺得此文對你有幫助,如果你對軟件測試、接口測試、自動化測試、面試經驗交流感興趣歡迎加入:
軟件測試技術群:695458161,群里發放的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。
作者:來自公眾號:軟測之家
出處:https://www.cnblogs.com/csmashang/p/12706835.html
原創不易,歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。