Selenium基礎知識

一、環境搭建(以java為例)

1.下載chrome瀏覽器

https://www.google.cn/intl/zh-CN/chrome/

2.查看chrome瀏覽器版本

設置+關于chrome

3.下載chrome瀏覽器驅動

下載瀏覽器對應版本的

ChromeDriver - WebDriver for Chrome - Downloads

120以上版本:Chrome for Testing availability

4.配置環境變量

點擊我的電腦/此電腦>>右鍵點擊屬性>>點擊高級系統設置>>環境變量>>系統變量。

點擊系統變量中的path,點擊新增,并將驅動的安裝目復制填入后,點擊確定。

5.Java創建項目,添加pom文件中添加依賴

<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>
</dependencies>
import org.openqa.selenium.chrome.ChromeDriver;public class Main {public static void main(String[] args) {WebDriver webDriver = new ChromeDriver();}
}

二、元素定位

1.CSS選擇

(1)類選擇器

class=""

webDriver.findElement(By.cssSelector(".前端樣式類名"));

(2)id選擇器

webDriver.findElement(By.cssSelector("#前端樣式類名"));

(3)標簽選擇器

標簽名作為定位

2.xpath

webDriver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[1]")).click();

(1)絕對路徑

(2)相對路徑

? ? 相對路徑+索引??

? ? 相對路徑+屬性值

? ? 相對路徑+通配符

? ? 相對路徑+文本匹配

3.css選擇器 vs xpath

CSS選擇器定位元素效率高

三、操作測試對象

1.click

點擊對象

webDriver.findElement(By.cssSelector("#kw")).click();

2.send_key

在對象上模擬按鍵輸入

webDriver.findElement(By.cssSelector("#kw")).sendKeys("你好");

3.clear

清除對象輸入的文本內容

4.submit

提交??

點擊元素需是在form標簽內

5.text

獲取元素文本信息

四、等待

1.sleep(等待時間)

強制等待

2.隱式等待

最長等待某個時間點,獲取到頁面元素,就執行下面代碼,如果這個時間還沒有找到元素就報錯。

WebDriverWait wait= new WebDriverWait(webDriver,3000);

五、打印信息

1.title

獲取title

String title= webDriver.getTitle();

2.獲取url

String url= webDriver.getCurrentUrl();

六、瀏覽器操作

1.瀏覽器最大化

webDriver.manage().window().maximize();

2.設置瀏覽器大小

 webDriver.manage().window().setSize(new Dimension(長度,寬度));

3.瀏覽器前進和后退

后退

webDriver.navigate().back();

前進

webDriver.navigate().forward();
webDriver.navigate().to("網址");

等同于 webDriver.get();

4.滾動條

((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");

5.關閉瀏覽器

webDriver.quit();
webDriver.close();

區別:

1.quit關閉整個瀏覽器,close關閉當前頁面

2.quit清空緩存,close不會清空緩存

七、鍵盤按鍵

1.鍵盤按鍵使用

webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL);

2.組合鍵使用

webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");

八、鼠標事件

//創建 Actions
Actions action=new Actions(webDriver);//找到按鈕
WebElement target= webDriver.findElement(By.cssSelector(".a3"));//鼠標移動到這個按鈕
action.moveToElement(target).contextClick().perform();

九、選擇框

List <WebElement> webElements=webDriver.findElements(By.cssSelector("input"));for(int i=0;i<webElements.size();i++){//getAttribute獲取頁面上的元素屬性if(webElements.get(i).getAttribute("type").equals("radio")){webElements.get(i).click();}}

十、上傳文件

webDriver.get("");
webDriver.findElement(By.xpath("/html/body/input")).sendKeys("上傳文件名");

十一、frame

webDriver.switchTo().frame("id名");

十二、下拉框

 WebElement webElement= webDriver.findElement(By.cssSelector("#ShippingMethod"));Select select=new Select(webElement);select.selectByIndex(1);select.selectByValue("8.34");

十三、alert、confirm、prompt 的處理

text 返回alert/confirm/prompt 中的文字信息
accept 點擊確認按鈕
dismiss 點擊取消按鈕,如果有的話
send_keys 輸入值,如果alert 沒有對話框就不能用了,不然會報錯

//輸入彈窗
webDriver.switchTo().alert().sendKeys("name");//點擊確定webDriver.switchTo().alert().accept();//點擊取消webDriver.switchTo().alert().dismiss();

十四、窗口切換

 //當前窗口句柄String cur_handle=webDriver.getWindowHandle();//當前瀏覽器當前所有句柄Set<String> all_handles=webDriver.getWindowHandles();String target="";for(String temp :all_handles){target=temp;}//切換窗口句柄webDriver.switchTo().window(target);

十五、截圖

下載依賴

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency>
 File file=((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
//file保存磁盤FileUtils.copyFile(file,new File("保存路徑"));

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

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

相關文章

WordPress使用

WordPress功能菜單 儀表盤 可以查看網站基本信息和內容。 文章 用來管理文章內容&#xff0c;分類以及標簽。編輯文章以及設置分類標簽&#xff0c;分類和標簽可以被添加到 外觀-菜單 中。 分類名稱自定義&#xff1b;別名為網頁url鏈接中的一部分&#xff0c;最好別設置為中文…

概率密度函數(PDF)與神經網絡中的激活函數

原創:項道德(daode3056,daode1212) 在量子力學中&#xff0c;許多現象都是統計的結果&#xff0c;基本上用的是正態分布&#xff0c;然而&#xff0c;從本質上思考&#xff0c;應該還存在低階的分布&#xff0c;標準的正態分布是它的極限&#xff0c;這樣一來&#xff0c;或許在…

python中多線程使用

前言 記錄下Python中多線程使用 標題 前言簡介使用demo 簡介 Python 中的多線程主要通過 threading 模塊來實現。多線程是一種并發編程的方式&#xff0c;允許程序在同一時間執行多個線程&#xff0c;每個線程執行不同的任務。然而需要注意的是&#xff0c;在 Python 中由于 …

【前端素材】推薦優質后臺管理系統Spica Admin平臺模板(附源碼)

一、需求分析 后臺管理系統是一種用于管理網站、應用程序或系統的工具&#xff0c;它通常作為一個獨立的后臺界面存在&#xff0c;供管理員或特定用戶使用。下面詳細分析后臺管理系統的定義和功能&#xff1a; 1. 定義 后臺管理系統是一個用于管理和控制網站、應用程序或系統…

【安全】大模型安全綜述

大模型相關非安全綜述 LLM演化和分類法 A survey on evaluation of large language models,” arXiv preprint arXiv:2307.03109, 2023.“A survey of large language models,” arXiv preprint arXiv:2303.18223, 2023.“A survey on llm-gernerated text detection: Necess…

刷題日記-Day1- Leedcode-704. 二分查找,27. 移除元素-Python實現

704 二分查找 鏈接&#xff1a;https://leetcode.cn/problems/binary-search/description/ 給定一個 n 個元素有序的&#xff08;升序&#xff09;整型數組 nums 和一個目標值 target &#xff0c;寫一個函數搜索 nums 中的 target&#xff0c;如果目標值存在返回下標&#xf…

vue3 toRefs之后的變量修改方法

上效果 修改值需要帶上解構之前的對象名obj&#xff0c; changeName:()>{ // toRefs 解決后變量修改值方法&#xff1a; 解構前變量.字段新值 obj.name FEIFEI; } } 案例源碼 <!DOCTYPE html> <html> <head><me…

如何在pgAdmin中用替換的值更新jsonb列?

我有一個名為files的PostgreSQL表&#xff0c;其中包括一個名為formats的jsonb表。雖然有些行是[null]&#xff0c;但其他行具有此結構的對象&#xff1a; {"thumbnail": {"ext": ".jpg","url": "https://some-url.com/image01.…

Vue | (四)使用Vue腳手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目錄 &#x1f4da;初始化腳手架&#x1f407;創建初體驗&#x1f407;分析腳手架結構&#x1f407;關于render&#x1f407;查看默認配置 &#x1f4da;ref與props&#x1f407;ref屬性&#x1f407;props配置項 &#x1f4da;混入&#x1f4da;插件&#x1f4da;scoped樣…

idea配置javafx

一、下載sdk 在jdk8之后,需要下載sdk包 ??javafx-sdk-18.zip 這里適用的jkd版本如圖 二、配置 創建一個項目之后,進行如下配置,將sdk導入到項目中 配置啟動參數 可以使用-號將之前的去掉&

同步 BUCK 與 異步 BUCK 的區別

上篇文章介紹 BUCK 基本拓撲電路工作原理&#xff0c;BUCK 電路如下圖&#xff1a; 因為二極管的存在&#xff0c;只需要控制一個 MOS 管開關&#xff0c;一般將該電路稱為異步 BUCK 電路&#xff0c;如果把這個二極管換為 MOS 管&#xff0c;如下圖&#xff1a; 該電路用到了兩…

vue Threejs實現任意畫線(鼠標點擊畫線)

Threejs實現任意畫線(鼠標點擊畫線) 鼠標左鍵單擊添加點鼠標右鍵回退到上一個點,并繼續畫按住shift可以畫平行于x軸或平行于z軸的線按Esc完成畫線

【leetcode題解C++】121.買賣股票的最佳時機 and 122.買賣股票的最佳時機II and 55.跳躍游戲 and 45.跳躍游戲II

121. 買賣股票的最佳時機 給定一個數組 prices &#xff0c;它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。 你只能選擇 某一天 買入這只股票&#xff0c;并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所能獲取的最大利潤。 返回你可以從…

汽車信息安全概述

隨著智能網聯汽車的迅猛發展&#xff0c;車輛不再是簡單的交通工具&#xff0c;而是集數據收集、處理與通信于一體的移動智能終端。然而&#xff0c;這一變革也使得汽車成為黑客攻擊的新目標。汽車信息安全問題日益凸顯&#xff0c;成為行業關注的焦點。本文將深入探討汽車信息…

前后端分離vscode保險業務管理系統vue+Nodejs

本設計主要應用于完成對保險業務進行計算機化的管理。系統前臺展示各種種類的保險&#xff0c;顧客可以選擇登陸后買入。公司員工為管理員&#xff0c;由公司統一分配賬號&#xff0c;員工用工號密碼登陸。可以修改密碼&#xff0c;查看、修改自己的信息。員工可處理顧客信息。…

企微hook框架

https://wwm.lanzoum.com/ipUTp1ot1twh 密碼:hvev 免費的企微框架 支持文本消息&#xff0c;圖片消息&#xff0c;視頻消息&#xff0c;文件消息。 其他可自行下載測試。 有興趣可以進群交流。720192224 BOOL WxWorkSendData(string data) { WX_GETOBJDATA ob…

1.CSS單位總結

CSS 單位總結 經典真題 px 和 em 的區別 CSS 中的哪些單位 首先&#xff0c;在 CSS 中&#xff0c;單位分為兩大類&#xff0c;絕對長度單位和相對長度單位。 絕對長度單位 我們先來說這個&#xff0c;絕對長度單位最好理解&#xff0c;和我們現實生活中是一樣的。在我們…

Windows sever Event 70117000事件日志

背景&#xff1a;Windows server2008 頻繁藍屏&#xff0c;日志報錯信息時間ID&#xff1a;7011&7000&#xff0c;Service Control Manager 原因&#xff1a;Service Control Manager transmits control requests to running services and driver services. It also maint…

mysql-MVCC

一、基礎概念 1. MVCC的含義 MVCC (Multiversion Concurrency Control)&#xff0c;即多版本并發控制技術&#xff0c;它是通過讀取某個時間點的快照數據&#xff0c; 來降低并發事務沖突而引起的鎖等待&#xff0c; 從而提高并發性能的一種機制. MVCC 的實現,是通過保存數據…

汽車常識網:電腦主機如何算功率的計算方法?

今天汽車知識網就給大家講解一下如何計算一臺主機的功率。 它還會解釋如何計算計算機主機所需的功率&#xff1f; &#xff1f; &#xff08;如何計算電腦主機所需的功率&#xff09;進行說明。 如果它恰好解決了您現在面臨的問題&#xff0c;請不要忘記關注本站。 讓我們現在就…