Selenium Web自動化測試學習筆記(一)

自動化測試

技術手段模擬人工,執行重復性任務,準確率100%,高于人工

selenium

可通過瀏覽器驅動控制瀏覽器,通過元素定位模擬人工,實現web自動化,沒有焦點(把瀏覽器放在最小化依然可以)的情況下依然可以進行,瀏覽器開20個窗口,每個都可以執行自己的代碼

安裝環境配置

Selenium

在pycharm控制臺輸入如下指令安裝selenium第三方庫

pip install selenium

安裝成功

Webdriver瀏覽器驅動安裝

https://googlechromelabs.github.io/chrome-for-testing/

我的chrome版本,大版本是136.0

stable的大版本與我的瀏覽器一致都是136.0

點擊stable,確保chrome版本和chromedriver的大版本(136.0)一致

復制搜索該網址,自動開始下載,將下載后的壓縮包解壓縮后如下

將最上面的驅動文件復制粘貼到自己的pycharm項目下,后續只要輸入相對路徑即可

因為瀏覽器版本號更新的非常頻繁,驅動器不能一更新就重新安裝,因此需要關閉瀏覽器的自動更新 ,ctrl+R進入下面的運行臺,輸入services.msc回車

找到有關谷歌的如下所有谷歌開頭的,啟動類型全部改為禁用

右鍵點擊屬性,找到啟動類型點禁用 ,點擊應用,再點擊確定

?

應用后如下

?再次查看屬性顯示無法自動更新,說明設置禁用成功

此時瀏覽器和瀏覽器驅動都已經具備,自動更新也已經關閉

簡單操作入門

01打開網頁、關閉網頁、瀏覽器

代碼:

from selenium import webdriver # 操作瀏覽器
from selenium.webdriver.chrome.options import Options # 設置谷歌瀏覽器
from  selenium.webdriver.chrome.service import Service # 管理驅動
import time#設置+啟動瀏覽器
def set_lauch():#01創建一個用于設置瀏覽器的對象q1q1 = Options()#禁用沙箱-增加兼容性q1.add_argument('--no-sandbox')#保持瀏覽器打開(默認代碼執行完自動關閉)q1.add_experimental_option('detach', True)#02創建瀏覽器a1并啟動瀏覽器a1 = webdriver.Chrome(service=Service('chromedriver.exe'), options=q1)#return用于接收return a1a1 = set_lauch()
#打開指定網址
url = 'https://www.baidu.com'
a1.get(url)
time.sleep(3)#單位s
#只關閉當前標簽頁
a1.close()
#徹底退出瀏覽器,釋放驅動
a1.quit()

結果 :打開三秒自動關閉

02 瀏覽器最大化、最小化

接著上面的代碼

a1.maximize_window()#最大化
time.sleep(2)
a1.minimize_window()#最小化

03瀏覽器打開位置、尺寸(單位像素)

?代碼:

a1.set_window_position(200,0)
a1.set_window_size(600,10)

04瀏覽器截圖&刷新當前網頁

可應用于某個畫面正在變化的網頁,隔幾秒就對這個網頁進行截圖并重新刷新

瀏覽器截圖

代碼:

a1.get_screenshot_as_file('1.png')

截圖如下圖所示,并不是電腦屏幕的截圖,只針對這個瀏覽器頁面的大小的截圖

刷新當前網頁

代碼:

a1.refresh()

Selenium核心功能

元素概念

任何一個網頁都是由各種各樣的元素組成的,如按鈕元素、圖片鏈接元素、文字元素

01元素定位

例:用代碼自動在百度的搜索框中輸入自己想搜索的內容,元素定位的作用就是在百度這個頁面自動定位找到搜索框這個元素

右鍵搜索框->點擊檢查,可快速定位到這個元素的前端代碼

代碼:導入包By

from  selenium.webdriver.common.by import By#在元素定位里面需要定位的類型
八大定位

八大定位,如下圖先導入By包以后,By.后面提示出現的8種定位類型如ID、NAME等就是Selenium的核心功能

定位一個元素(ID唯一)

?代碼:后面跟的是在檢查頁面檢查到的搜索框的ID的value值kw

a2 = a1.find_element(By.ID, 'kw')
print(a2)

結果,找到了這個元素

?定位多個元素

代碼:

#07多個元素定位--返回列表
a3 = a1.find_elements(By.ID, 'kw')
print(a3)

定位多個元素返回的是一個列表

02元素交互

1)元素輸入

代碼:

#08元素輸入--發送內容
a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('dafait')

結果 :由代碼自動完成輸入

2)元素點擊

找到百度一下這個按鈕的id如下圖所示為su

代碼:

a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('周杰倫')
a2 = a1.find_element(By.ID,'su')
a2.click()

這里結合上面第一個元素交互操作元素輸入為例,輸入周杰倫并用代碼進行百度一下這個搜索按鈕的自動點擊,得到結果如下圖所示,成功輸入周杰倫并點擊了搜索按鈕返回了百度匹配信息的結果

3)元素清空

操作代碼:

a2.clear()

綜合例子實戰:

實現先在搜索框中輸入周杰倫(不點擊百度一下這個按鈕),操作睡眠兩秒(截圖)后清空搜索框,再輸入周杰倫年輕并點擊百度一下按鈕,操作睡眠兩秒(截圖)

代碼:

a2 = a1.find_element(By.ID, 'kw')
a2.send_keys('周杰倫')
a1.get_screenshot_as_file('周杰倫輸入.png')
time.sleep(2)
a2.clear()
a2.send_keys('周杰倫年輕')
time.sleep(2)
a2 = a1.find_element(By.ID, 'su')
a2.click()
a1.get_screenshot_as_file('周杰倫年輕輸入并點擊.png')

程序代碼自動截圖結果如下圖所示

后續筆記

Selenium Web自動化測試學習筆記(二)--八大元素定位-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82113.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82113.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82113.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TikTok 矩陣運營新手實操保姆級教程 2.0 版本

在當下這個全球化的數字浪潮中,TikTok 這片充滿機遇的流量藍海,正吸引著無數創業者和品牌方爭相角逐。而要想在這激烈的競爭中脫穎而出,TikTok 矩陣運營無疑是至關重要的制勝法寶。今天,就給大家送上這份超實用的新手實操教程&…

使用DeepSeek協助恢復歷史數據

最近,工作中遇到比較老的數據庫備份文件數據恢復的問題。過程中使用DeepSeek分析,很快的解決了從除備份文件本身其他信息一概不知的條件下,數據庫選型問題和環境搭建問題。下面把實施過程分享出來,給其他遇到相同問題的小伙伴提供…

【特殊場景應對6】頻繁跳槽:行業特性與穩定性危機的解釋邊界

寫在最前 作為一個中古程序猿,我有很多自己想做的事情,比如埋頭苦干手搓一個低代碼數據庫設計平臺(目前只針對寫java的朋友),比如很喜歡幫身邊的朋友看看簡歷,講講面試技巧,畢竟工作這么多年,也做到過高管,有很多面人經歷,意見還算有用,大家基本都能拿到想要的offe…

企業智能化第一步:用「Deepseek+自動化」打造企業資源管理的智能中樞

隨著Deepseek乃至AI人工智能技術在企業中得到了廣泛的關注和使用,多數企業開始了AI探索之旅,迅易科技也不例外,且在不斷地實踐中強化了AI智能應用創新的強大能力。 為解決企業知識管理碎片化、提高內部工作效率等問題,迅易將目光放…

大連理工大學選修課——圖形學:第三四章 基本圖形生成算法

第三四章 基本圖形生成算法 圖形生成 概念:如何在指定的輸出設備上,根據坐標描述,構造基本二維幾何圖形 基本二維幾何圖形:點、直線、圓、多邊形域、字符串及相關屬性等。 圖形生成的概念 是在指定的輸出設備上,根…

怎樣避免住宅IP被平臺識別

要有效避免住宅IP被平臺識別,需從IP質量選擇、環境參數偽裝、行為模式模擬、技術細節處理等多維度構建防御體系。以下是基于行業實踐的綜合性解決方案: 一、確保住宅IP的高純凈度 選擇真實家庭網絡IP 驗證IP是否歸屬真實家庭寬帶(非機房IP偽裝…

WPF 觸發器 Trigger

觸發器 Trigger 觸發器(Trigger)是 WPF 中的一種機制: 當某個條件滿足時,自動改變控件的某些屬性,比如顏色、大小、透明度等。 換句話說,就是"如果……那么就……" 的一種規則。 常見觸發器類…

NLP核心技術解析:大模型與分詞工具的協同工作原理

文章目錄 一、核心關系概述二、分詞工具的核心作用三、未登錄詞(OOV)問題3.1 問題本質分析3.2 解決方案3.2.1 預對齊詞匯表(最優解)3.2.2 子詞回退策略3.2.3 詞匯表擴展(適合專業領域) 3.3 技術選型建議3.4…

vscode預覽模式(點擊文件時默認覆蓋當前標簽,標簽名稱顯示為斜體,可通過雙擊該標簽取消)覆蓋標簽、新窗打開

文章目錄 VS Code 預覽模式如何取消預覽模式(即“固定”標簽頁)?預覽模式有什么用? VS Code 預覽模式 在 VS Code 中,當你單擊文件瀏覽器(例如,資源管理器側邊欄)中的某個文件時&am…

MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么?

接上文 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 是怎樣練成的? user/_sleep 是什么? book-riscv-rev3.pdf 3.8節有對Xv6 binary文件的格式描述 Xv6 binaries are formatted in the widely-used ELF format, defined in (kernel/elf.h). An …

【AI科技】AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模塊化部署,可在 AMD Instinct GPU 上實現可擴展 AI

AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模塊化部署,可在 AMD Instinct GPU 上實現可擴展 AI 現代 AI 工作負載的規模和復雜性不斷增長,而人們對性能和部署便捷性的期望也日益提升。對于在 AMD Instinct? GPU 上構建 AI 和 HPC 未來…

【含文檔+PPT+源碼】基于微信小程序連鎖藥店商城

項目介紹 本課程演示的是一款基于微信小程序連鎖藥店商城,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系統 3.該項目附帶的…

node.js模塊化步驟(各標準區別)CommonJS規范、AMD規范、UMD規范、ES Modules (ESM)

前后端建議統一使用ESM 文章目錄 Node.js模塊化發展歷程與標準對比一、模塊化的意義1.1 解決的核心問題1.2 沒有模塊化的問題 二、CommonJS規范2.1 核心特征2.2 實現示例 三、AMD (Asynchronous Module Definition)3.1 特點3.2 代碼示例 四、UMD (Universal Module Definition)…

人工智能與智能合約:如何用AI優化區塊鏈技術中的合約執行?

引言:科技融合的新風口 區塊鏈和人工智能,是當前最受矚目的兩大前沿技術。一個以去中心化、可溯源的機制重構信任體系,另一個以智能學習與決策能力重塑數據的價值。當這兩項技術相遇,會碰撞出什么樣的火花? 智能合約作…

RabbitMQ-api開發

前言 MQ就是接收并轉發消息 核心概念 admin是用戶 每個虛擬機上都有多個交換機 快速入門 引入依賴 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.22.0</version></dependen…

PostgreSQL Patroni集群組件作用介紹:Patroni、etcd、HAProxy、Keepalived、Watchdog

1. Watchdog 簡介 1.1 核心作用 ? 主節點故障檢測 Watchdog 會定時檢測數據庫主節點&#xff08;或 Pgpool 主節點&#xff09;的運行狀態。 一旦主節點宕機&#xff0c;它會發起故障切換請求。 ? 協調主備切換 多個 Pgpool 節點時&#xff0c;Watchdog 保證只有一個 Pg…

【多種不同提交方式】通過springboot實現與前端網頁數據交互(非常簡潔快速)

【多種不同提交方式】通過springboot實現與前端網頁數據交互 提示&#xff1a;幫幫志會陸續更新非常多的IT技術知識&#xff0c;希望分享的內容對您有用。本章分享的是springboot的使用。前后每一小節的內容是存在的有&#xff1a;學習and理解的關聯性。【幫幫志系列文章】&am…

使用 AI 如何高效解析視頻內容?生成思維導圖或分時段概括總結

一、前言 AI 發展的如此迅速&#xff0c;有人想通過 AI 提效對視頻的解析&#xff0c;怎么做呢&#xff1f; 豆包里面有 AI 視頻總結的功能&#xff0c;可以解析bilibili網站上部分視頻&#xff0c;如下圖所示&#xff1a; 但有的視頻解析時提示&#xff1a; 所以呢&#x…

鞅與停時 - 一種特別的概率論問題

討論一個有趣的概率問題&#xff1a; [P3334 ZJOI2013] 拋硬幣 - 洛谷 實際上是一個猴子打字問題&#xff0c;考慮一直無規律隨即打字的猴子&#xff0c;鍵盤上只有A-Z一共26個字母&#xff0c;對于一個特定的字符串 S S S &#xff1a; ABCABCAB &#xff0c;能否在有限的打…

arcgis和ENVI中如何將數據輸出為tif

一、arcgis中轉換為tif 右鍵圖層&#xff1a; Data -> Export Data, 按照圖示進行選擇&#xff0c;選擇tiff格式導出即可&#xff0c;還可以選擇其他類型的格式&#xff0c;比如envi。 二、 ENVI中轉換為tif File -> Save As -> Save As (ENVI, NITF, TIFF, DTED) …