用selenium4 webdriver + java 搭建并完成第一個自動化測試腳本

自動化測試任務:

百度搜索自己的姓名。點擊第一個鏈接(或者第二個),在新的頁面上,添加斷言,驗證你的名字是否存在。

實驗資料百度網盤下載路徑:

鏈接: https://pan.baidu.com/s/1nVlHX_ivresul9Thg6Cvjw?pwd=2ydd 提取碼: 2ydd?

1.新建一個java工程

打開eclipse,點擊菜單 File -> New -> Java Project

輸入項目名稱,(為了區分作業,請包含自己的姓名)?

2.將selenium 包添加到編譯路徑

1)在項目上添加文件夾"lib"? ?( 文件夾名也可以是其他的,不影響使用)

彈出窗口中指定文件夾名稱

2) 將給大家下發資料中的lib文件夾下的“4_selenium-server-4..jar”復制到lib文件夾中

3)將jar包添加到編譯路徑

選中剛才添加的jar文件。點擊右鍵菜單 build path -> add to build path

如下圖所示。則說明selenium已經成功添加到編譯路徑了

3.將junit到編譯路徑

為了使用junit框架來編寫測試腳本,我們可以把junit添加到工程中來

在工程上點擊右鍵菜單 build path -> configure build path,..

彈出窗口上。在library選項卡下,點擊“Add library

系統返回到 java build path 頁面。點擊【Apply and Close】

此時工程中可以看到junit4了奧

5.將瀏覽器驅動程序添加到工程中

selenium 并不能直接操作瀏覽器,它需要通過瀏覽器驅動程序操作瀏覽器。

為了便于管理,我們把瀏覽器驅動程序也放到項目工程中。

這里需要注意,瀏覽器驅動程序一定要和瀏覽器一致,是火狐還是edge瀏覽器,版本是多少,都要弄清楚。

例如,

edge瀏覽器在網址中輸入:edge://version/ 可以查看edge瀏覽器的版本號

火狐瀏覽器在網址中輸入:about:support 可以查看瀏覽器版本

本次以火狐瀏覽器為例說明

新建文件夾“firefoxdriver”

然后把我給大家的firefoxdriver下的“geckodriver-v0.34.0-win32.exe”復制,粘貼該文件夾下

如下所示,火狐瀏覽器的驅動程序已經放到工程中了,后面我們就可以使用該驅動程序了

4.創建測試文件

在工程src目錄上點擊右鍵 New - > class ,添加一個java文件

輸入測試類的名稱(請大家包含自己的姓名,后面作業提交截圖會用到)

5.編寫第一個測試用例

1)輸入如下圖中的矩形框內的代碼

2)導包

此時,@Test注解飄紅,這是因為還沒有將其添加到編譯路徑上

下面我們來導包。光標懸停在飄紅的Test上時,系統會給出若干個快速解決方案。如下所示,選擇導入 oig.junit?

導入后,@Test不在飄紅了,說明系統已經能識別到該類了。

3) 輸入腳本

大家可以復制如下腳本。

復制之前可以看一下我寫腳本的過程,對大家編寫腳本也有幫助

元素定位,大家可以借助開發中工具(F12可以打開)點選元素,拷貝它的xpath定位方式 和css定位方式

		  System.setProperty("webdriver.gecko.driver", "firefoxdriver\\geckodriver-v0.34.0-win32.exe"); // 設置chrome驅動程序的路徑WebDriver driver = new FirefoxDriver(); //實例化瀏覽器driver.get("https://www.baidu.com/");   //打開百度頁面driver.manage().window().maximize();    //最大化窗口driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("曹紅杏");  //搜索框輸入 你的名字driver.findElement(By.xpath("//*[@id=\"su\"]")).click();driver.findElement(By.xpath("//*[@id=\"1\"]/div/div[1]/div[1]/h3/a")).click();//切換窗口Object win2 = driver.getWindowHandles().toArray()[1];driver.switchTo().window((String)win2);String text = driver.findElement(By.xpath("/html/body/div[6]/div/div/div[3]/form/div[1]/h3")).getText();Assert.assertEquals("曹紅杏", text);

6.運行測試用例

選中要運行的測試用例執行

由于腳本中未考慮測試程序和被測程序的同步問題。有的頁面還沒有加載完成。測試程序就試圖定位,導致元素定位不到,junit執行會出錯

7. 三種同步方式

大家可以使用任意一種同步方式,使得腳本正常運行

強制等待

Thread.sleep(n); ? 停頓n毫秒

sleep可能拋出異常,異常可以自己處理,即使用try..catch捕獲,也可以throw拋出,交給調用者處理

隱式等待

隱式等待時間也叫全局等待時間,并設置有超時時間;

即腳本運行到此處時,在等待時間內進行輪詢,直到頁面元素出現方繼續向下運行, 若在超時時間內仍有元素未出現,則不再等待,腳本繼續往下運行。

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3)); 隱式等待具有全局性,對所有的元素定位都有效果

顯示等待

顯式等待是針對于某個特定的元素設置的等待時間, 在設置時間內,元素變得可用,則繼續執行后續操作;如果等待時間后元素仍然不可用,則拋出NoSuchElementException異常。

例如:

WebDriverWait wait =new WebDriverWait(driver, 5); wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*@id='1']/div/div[1]/h3/a")));

8.窗口切換

百度搜索時,點擊第一個鏈接,會打開一個新的頁面。如果希望到新的頁面上繼續操作。

則需要先切換到該頁面上奧。然后才能在該頁面上定位元素,進行操作。

?? ? ? ? ?Object win2 = driver.getWindowHandles().toArray()[1];
?? ? ? ? ?driver.switchTo().window((String)win2);

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

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

相關文章

LLM大模型中的基礎數學工具—— 約束優化

Q26: 推導拉格朗日乘子法 的 KKT 條件 拉格朗日乘子法與 KKT 條件是啥? 拉格朗日乘子法是解決約束優化問題的利器。比如,想最小化函數 ,同時滿足約束 ,就構造拉格朗日函數 ( 是乘子)。KKT 條件是解這類問…

net+MySQL中小民營企業安全生產管理系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 近些年來,隨著科技的飛速發展,互聯網的普及逐漸延伸到各行各業中,給人們生活帶來了十分的便利,中小民營企業安全生產管理系統利用計算機網絡實現信息化管理,使企業的中小民營企業安全生產管理發展和服務水平有顯…

論文閱讀:2024 arxiv AI Safety in Generative AI Large Language Models: A Survey

總目錄 大模型安全相關研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 AI Safety in Generative AI Large Language Models: A Survey 生成式人工智能大型語言模型中的人工智能安全性:一項調查 https://arxiv.org/pdf/2407.18369 https://www.doubao.com…

【MySQL數據庫】表的約束

目錄 1,空屬性 2,默認值 3,列描述 4,zerofill 5,主鍵primary key 6,自增長auto_increment 7,唯一鍵unique 8,外鍵foreign key 在MySQL中,表的約束是指用于插入的…

基于javaweb的SpringBoot校園失物招領系統設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

多模態大語言模型arxiv論文略讀(二十六)

Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ?? 論文標題:Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ?? 論文作者:Xinpeng Ding,…

“星睿O6” AI PC開發套件評測 - 部署PVE搭建All in One NAS服務器

Radxa O6平臺上部署PVE搭建All in One NAS服務器 Radxa O6是一款性能卓越的單板計算機,其強勁的硬件配置和多樣化的接口設計,使其成為家庭和小型企業理想的All in One服務器解決方案。值得一提的是,O6原生配備了兩個5G網口,便于直…

C++ linux打包運行方案(cmake)

文章目錄 背景動態庫打包方案動態庫轉靜態庫動態庫打到軟件包中 運行 背景 使用C編寫的一個小項目,需要打包成ubuntu下的可執行文件,方便分發給其他ubuntu執行,因為docker鏡像方案過于臃腫,所以需要把項目的動態庫都打在軟件包中…

Linux內核編譯(Ubuntu)

實驗內容:在系統中下載統一發行版本的版本號較高的內核,編譯之后運行自己編譯的內核,并使用uname-r命令查看是否運行成功。 實驗步驟: 1.查看實驗環境和內核版本 圖1 實驗環境 VMware中虛擬機Ubuntu(24.04&#xff…

EdgeGPT - 新版Bing聊天功能逆向工程

本文翻譯整理自:https://github.com/acheong08/EdgeGPT 文章目錄 一、關于 EdgeGPT相關鏈接資源關鍵功能特性 二、安裝系統要求安裝命令 三、認證配置獲取Cookie步驟代碼中使用Cookie 四、使用方法1、命令行方式2、Python API方式使用Chatbot類使用Query輔助類 3、…

三網通電玩城平臺系統結構與源碼工程詳解(四):子游戲集成與服務器調度機制全解

本篇將深入講解三網通電玩城平臺中子游戲接入、前后端資源組織方式、服務器調度邏輯、并發接入方案等核心內容,重點覆蓋“李逵劈魚”、“水果瑪麗”、“瘋狂瑪麗”等熱門組件,輔以完整代碼框架與部署邏輯。 一、子游戲資源目錄結構與加載機制 平臺采用標…

1.1 AI大模型與Agent的興起及其對企業數字化轉型的推動作用

隨著人工智能技術的飛速發展,AI大模型和智能代理(Agent)的興起正成為推動企業數字化轉型的重要力量。從2017年GPT-1的首次亮相到2025年GPT-4和Qwen 2.5等多模態模型的成熟,AI大模型經歷了顯著的技術演進;與此同時&…

位運算練習:起床困難綜合征(貪心,位運算)(算法競賽進階指南學習筆記)

目錄 前情提要起床困難綜合征(貪心,位運算) 前情提要 一些基礎運算操作用法看看上一篇; 起床困難綜合征(貪心,位運算) 題目原文 [P2114 NOI2014] 起床困難綜合癥 - 洛谷 思路分析 題目很長…

PowerBi中REMOVEFILTERS怎么使用?

在 Power BI 的 DAX 中,REMOVEFILTERS() 是一個非常重要的函數,常用于取消某個字段或表的篩選上下文(Filter Context),從而讓你的計算不受切片器(Slicer)、篩選器或視覺對象的限制。 ? 一、REM…

Vue3 實戰:打造多功能旅游攻略選項卡頁面

在旅游類應用開發中,為用戶提供全面、直觀的信息展示界面至關重要。本文將分享如何基于 Vue3 Axios 技術棧,實現一個包含攻略、游記、問答三大板塊的旅游攻略選項卡頁面,從樣式設計到交互邏輯,帶你深入了解整個開發過程。 項目背…

JavaScript性能優化實戰(1):性能優化基礎與性能分析工具

性能優化的重要性與業務價值 在當今競爭激烈的互聯網環境中,網站和應用的性能已成為用戶體驗和業務成功的關鍵因素。研究表明,頁面加載時間每增加1秒,轉化率可能下降7%,而53%的用戶會在頁面加載時間超過3秒后放棄訪問。這些數據直接揭示了性能優化對業務的巨大影響: 用戶…

Unity 腳本使用(二)——UnityEngine.AI——NavMesh

描述 Singleton class 用于訪問被烘培好的 NavMesh. 使用NavMesh類可以執行空間查詢(spatial queries),例如路徑查找和可步行性測試。此類還允許您設置特定區域類型的尋路成本,并調整尋路和避免的全局行為。 靜態屬性&#xff0…

Java 靜態內部類面試題與高質量答案合集

本文整理了關于 Java 靜態內部類(Static Nested Class)在面試中的高頻問題及標準答案,幫助你理解其底層原理、內存表現以及實際應用。 1. 什么是靜態內部類?和普通內部類有什么區別? 答: 靜態內部類是定義…

為什么買不到一定阻抗特性曲線的磁環

為什么買不到一定阻抗特性曲線的磁環: 磁環繞不同的圈數,阻抗特性曲線不同,磁環沒有類似于磁珠的特定頻率和阻抗特性曲線的磁環。 磁環與磁珠的核心區別: 磁珠是一種固定頻率阻抗器件,出廠時已通過材料和工藝設計確定…

【MATLAB海洋專題】歷史匯總

【MATLAB海洋專題】歷史匯總 目錄 01:海洋專題進階教學 02:海洋數據處理 03:海洋數據下載 04:海洋配色 05:海洋專題基礎教學 06: 其他基礎畫圖 07:python 畫海圖專題 08:模式相關文件制作 01…