selenium官網文檔閱讀總結(day 4)

1.selenium的工作原理

selenium的工作原理涉及以下主要組件和步驟:

(1)WebDriver:這是selenium的核心組件,它是一個用于控制瀏覽器的API。WebDriver提供了許多方法,用于在瀏覽器中模擬用戶操作。不同的瀏覽器需要相應的WebDriver實現。

(2)瀏覽器驅動程序:每個瀏覽器需要一個特定的驅動程序,用于與WebDriver通信。例如,Chrome瀏覽器需要Chorme Driver,Firefox 瀏覽器需要Gecko Driver等。

(3)瀏覽器的實例化:在測試開始前,需要實例化一個特定瀏覽器的webdriver對象,這個webDriver對象可以控制一個真實的瀏覽器實例。

(4)模擬用戶操作:通過webdriver對象,你可以執行一系列模擬用戶操作,如點擊按鈕、輸入文本、提交表單、導航到不同頁面等。

(5)等待和定位元素:在自動化測試中,等待是一個重要的概念,你要等待頁面加載完成、元素可見、元素存在等條件滿足后再執行操作。同時,你需要定位要操作的html元素,比如按鈕、輸入框等。這可以通過各種定位策略如ID、類名、CSS選擇器、xpath等來實現。

(6)斷言和驗證:在自動化測試中,你通常會使用斷言來驗證預期結果是否與實際結果一致,這可幫助你確認web應用程序的行為是否符合預期。

(7)測試框架集成:selenium可以與不同的測試框架(如junit,testNG,pytest等)集成,以實現更結構化和可管理的測試。

2.selenium實現12306網站自動購票

?
from selenium import webdriver
import time
import jsonfrom selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWaitdef login():driver.get('https://kyfw.12306.cn/otn/resources/login.html')#最大化窗口driver.maximize_window()#獲取掃碼登錄cookies保存至本地,然后再從txt文件中讀取保存到本地的cookie進行登錄。該方法可能會在網站升級反爬操作后失效。driver.find_element(By.XPATH,'//*[@id="J-userName"]').send_keys('13709290316')driver.find_element(By.XPATH,'//*[@id="J-password"]').send_keys('428099ab')driver.find_element(By.XPATH,'//*[@id="J-login"]').click()#切換到彈出窗口driver.implicitly_wait(20)time.sleep(10)login_btn_loc=driver.find_element(By.XPATH,'//*[@id="modal"]/div[2]')driver.find_element(By.XPATH,'//*[@id="id_card"]').send_keys('0826')driver.find_element(By.XPATH,'//*[@id="verification_code"]').click()#手動輸入驗證碼time.sleep(30)driver.find_element(By.XPATH,'//*[@id="sureClick"]').click()# print("用戶登錄")time.sleep(2)# 登錄完成后就會跳轉新窗口n = driver.window_handlesprint('當前句柄', n)driver.switch_to.window(n[-1])  # driver切換至最新生產的頁面# '''1.cookie是用于保存用戶的類似賬號密碼等個人信息并存儲在瀏覽器中,是一種數字形式的訪問憑證。# 2.cookie有很多類型,因此在使用cookie時要先判定其數據類型'''cookie = driver.get_cookies()# print(cookie)# 獲取list的cookiesjsonCookies = json.dumps(cookie)# 轉換成字符串保存with open('ticket_cookies.txt', 'w')as f:f.write(jsonCookies)# print('cookies保存成功!')def buy():# 將鼠標懸停在車票頁簽上ele=driver.find_element(By.XPATH,'//*[@id="J-chepiao"]/a').click()#在driver瀏覽器上面,創建selenium的鼠標類操作對象# action=ActionChains(driver)
#     把鼠標移動到元素上#action.move_to_element(ele)driver.implicitly_wait(15)#點擊買票driver.find_element(By.XPATH,'//*[@id="megamenu-3"]/div[1]/ul/li[1]/a').click()driver.implicitly_wait(15)n = driver.window_handlesprint('當前句柄', n)driver.switch_to.window(n[-1])  # driver切換至最新生產的頁面time.sleep(3)# 選擇出發地driver.find_element(By.XPATH,'//*[@id="fromStationText"]').click()driver.find_element(By.XPATH,'//*[@id="ul_list1"]/li[29]').click()
#     選擇到達地driver.find_element(By.XPATH,'//*[@id="toStationText"]').click()driver.find_element(By.XPATH,'//*[@id="ul_list1"]/li[2]').click()
#     選擇日期,先清空文本框的值driver.find_element(By.XPATH,'//*[@id="train_date"]').clear()driver.find_element(By.XPATH,'//*[@id="train_date"]').send_keys('2023-08-09')driver.find_element(By.XPATH,'//*[@id="query_ticket"]').click()driver.implicitly_wait(15)driver.find_element(By.XPATH,'//*[@id="ticket_8d000G318206_08_23"]/td[13]/a').click()
#創建程序入口
if __name__=='__main__':driver = webdriver.Chrome()login()time.sleep(2)buy()?

3.開源庫管理

在python項目的project目錄下放置一個requirements.txt文件,在terminal中運行命令:

pip install -r requirements.txt

就會自動安裝文件中所有需要的庫。

# This is a mirror image of Tsinghua University
# -i https://pypi.tuna.tsinghua.edu.cn/simple# This is the specified version
# selenium==4.8.2
selenium
pytest

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

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

相關文章

掌握Python的X篇_39_繼承

本篇將會是本專欄關于python基本語法的最后一個知識點,后期將會談python,就會介紹使用python專題,例如:做爬蟲、有架構的網站。 文章目錄 1. 為什么需要繼承2. 繼承的基本概念3. python中繼承的基礎語法4. 總結 1. 為什么需要繼承…

NLP語言模型概覽

語言模型結構分類 Encoder-Decoder(Transformer): Encoder 部分是 Masked Multi-Head Self-Attention,Decoder 部分是 Casual Multi-Head Cross-Attention 和 Casual Multi-Head Self-Attention 兼具。比如T5,BART,MA…

騰訊云輕量服務器和云服務器的CPU處理器有差別嗎?

騰訊云輕量應用服務器和CVM云服務器的CPU處理器性能有差別嗎?創建輕量應用服務器時不支持指定底層物理服務器的CPU型號,騰訊云將隨機分配滿足套餐規格的物理CPU型號,通常優先選擇較新代次的CPU型號。而云服務器CVM的CPU處理器型號、主頻都是有…

JAVA設計模式----原型設計模式

文章目錄 一、簡介二、實現方式三、原型模式的注意事項淺拷貝與深拷貝淺拷貝深拷貝一、簡介 定義:用原型實例指定創建對象的種類,并通過拷貝這些原型創建新的對象。 類型:創建類模式 類圖: 原型模式主要用于對象的復制,它的核心是就是類圖中的原型類Prototype。Protot…

下載程序到西門子PLC

更多關于西門子S7-200PLC內容請查看:西門子200系列PLC學習課程大綱 下載西門子200PLC程序分以下兩步: 一.編譯程序 1. 如下圖1-1所示,使用PPI電纜將PLC和電腦連接上,注意筆記本使用USB轉PPI電纜,連接保證給PLC單獨供…

Linux(進程間通信詳解)

進程間通信,顧名思義,就是進程與進程之間互通信交流,OS保證了各進程之間相互獨立,但這不意味著進程與進程之間就互相隔離開,在不少的情況下,進程之間需要相互配合共同完成某項6任務,這就要求各進…

怎樣學會單片機

0、學單片機首先要明白,一個單片機啥也干不了,學單片機的目的是學習怎么用單片機驅動外部設備,比如數碼管,電機,液晶屏等,這個需要外圍電路的配合,所以學習單片機在這個層面上可以等同為學習單片…

JVM:運行時數據區域(白話文)

最近有時間在看一本<深入了解Java虛擬機>的書籍&#xff0c;這本書是一個中國人&#xff0c;名叫周志明的人寫的。相比于其他翻譯過來的技術書籍&#xff0c;這本書還是挺通俗易懂的。先前有和彬哥在聊&#xff0c;他說如果是自己一個人看的話會很枯燥&#xff0c;很難堅…

雙端列表 —— Deque 接口概述,使用ArrayDeque實現隊列和雙端隊列數據結構

Deque接口簡介 Deque譯為雙端隊列&#xff0c;在雙向都能作為隊列來使用&#xff0c;同時可用作棧。Deque接口的方法是對稱成比例的。 Deque接口繼承Queue接口&#xff0c;因此具有Queue&#xff0c;Collection&#xff0c;Iterable的方法屬性。 雙端隊列的工作原理 在常規隊…

前端架構師的能力要求:打造可靠、靈活和可擴展的Web應用

隨著互聯網技術迅猛發展&#xff0c;現代Web應用程序變得越來越復雜且功能強大。作為一名前端架構師&#xff0c;在這個快節奏且競爭激烈的環境中&#xff0c;你需要具備廣泛而深入地技術知識&#xff0c;并且有能力設計、開發和維護高度可靠、靈活和可擴展性強的Web應用。 深入…

前端發送請求和后端springboot接受參數

0.xhr、 ajax、axios、promise和async/await 和http基本方法 xhr、 ajax、axios、promise和async/await都是異步編程和網絡請求相關的概念和技術&#xff01; xhr&#xff1a;XMLHttpRequest是瀏覽器提供的js對象&#xff08;API&#xff09;&#xff0c;用于請求服務器資源。…

百度百科詞條要如何才能符合要求,上百度百科平臺

百度百科詞條對于內容的審核一直是比較嚴格的&#xff0c;因此必須符合百度百科詞條平臺規則&#xff0c;才能夠上百度百科平臺&#xff0c;下面洛希愛做百科網和大家分享百度百科詞條上平臺的內容和規則要求。 1&#xff0c; 首先&#xff0c;百度百科需要知道的是我們要以公益…

Java基礎集合框架學習(上)

文章目錄 初識基礎框架為什么使用集合框架集合框架的繼承關系ArrayList入門案例單元測試和增刪改查單元測試的注意事項LinkedList入門案例ArrayList底層是數組LinkedList底層是鏈表ArrayList和LinkedList選型ArrayList存放DOG對象 初識基礎框架 Java基礎集合框架是Java編程語言…

jvm里的內存溢出

目錄 堆溢出 虛擬機棧和本地方法棧溢出&#xff08;棧溢出很少出現&#xff09; 方法區和運行時常量池溢出 本機內存直接溢出&#xff08;實際中很少出現、了解即可&#xff09; 堆溢出 堆溢出&#xff1a;最常見的是大list&#xff0c;list里面有很多元素 堆溢出該怎么解決…

ArcGIS入門操作手冊

一.ArcGIS安裝過程 參考本人博客&#xff1a;保姆級Arcgis安裝圖文安裝教程_追憶苔上雪的博客-CSDN博客 二.ArcGIS植被指數計算 (1)使用工具&#xff1a;柵格計算器 打開軟件&#xff0c;右側搜索柵格計算器打開&#xff0c;要是搜索欄不小心叉掉找不到了&#xff0c;可以通…

docker-desktop數據目錄遷移

1.退出docker-desktop后執行 wsl --list -v 如下 NAME STATE VERSION * docker-desktop Stopped 2docker-desktop-data Stopped 22.執行以下命令進行數據導出&#xff1a;&#xff08;需要等待命令執行完成&#xff09…

SpringCache的介紹和入門案例

文章目錄 概述常用注解入門案例 概述 Spring Cache是Spring框架提供的一個緩存抽象層&#xff0c;用于在應用程序中實現緩存的功能。它通過在方法執行前檢查緩存中是否已經存在所需數據&#xff0c;如果存在則直接返回緩存中的數據&#xff0c;如果不存在則執行方法體&#xf…

定義行業新標準?谷歌:折疊屏手機可承受20萬次折疊

根據Patreon賬戶上的消息&#xff0c;Android專家Mishaal Rahman透露&#xff0c;谷歌計劃推出新的硬件質量標準&#xff0c;以滿足可折疊手機市場的需求。Android原始設備制造商&#xff08;OEM&#xff09;將需要完成谷歌提供的問卷調查&#xff0c;并提交樣品設備進行嚴格審…

MySQL慢查詢日志常用參數配置

慢查詢日志 slow log&#xff1a;指query time減去lock time的時間&#xff0c;超過設置的閾值的查詢SQL。 常用配置 #通用配置需配置在mysqld標簽先&#xff0c;版本獨有配置在mysqld-version標簽下 [mysqld] #是否開啟慢日志,Type:Boolean Default Value:OFF slow_log0/1…

基于 JMeter API 開發性能測試平臺

目錄 背景&#xff1a; 常用的 JMeter 類和功能的解釋&#xff1a; JMeter 編寫性能測試腳本的大致流程示意圖&#xff1a; 源碼實現方式&#xff1a; (1) 環境初始化 (2) 環境初始化 (3) 創建測試計劃 (4) 創建 ThreadGroup (5) 創建循環控制器 (6) 創建 Sampler (…