Selenium+python自動化-登錄教程

来源:https://www.cnblogs.com/123456feng/archive/2022/04/27/16195474.html
-Advertisement-
Play Games

前言 一天不寫代碼,這手就閑的發慌,好難受啊… 前面幾篇都是講一些基礎的知識,沒具體的案例,小伙伴看起來比較枯燥,有不少小伙伴給小編提建議以後多出一些具體的 案例。本篇就是拿部落論壇作為測試項目,寫一個簡單的登錄測試腳本。 在寫登錄腳本的時候呢,先要保證流程能跑起來,然後才是去想辦法優化代碼,讓自己 ...


前言

一天不寫代碼,這手就閑的發慌,好難受啊…

前面幾篇都是講一些基礎的知識,沒具體的案例,小伙伴看起來比較枯燥,有不少小伙伴給小編提建議以後多出一些具體的

案例。本篇就是拿部落論壇作為測試項目,寫一個簡單的登錄測試腳本。

在寫登錄腳本的時候呢,先要保證流程能跑起來,然後才是去想辦法優化代碼,讓自己的腳本看起來更舒服,具有良好的可讀

性。

在這裡插入圖片描述

一、登錄

  1.先打開瀏覽器

    2.打開github登錄頁:https://github.com/login

    3.查找元素之前可以先設置元素等待:implicitlywait()

    4.輸入用戶名、密碼,然後點登錄

在這裡插入圖片描述

代碼如下:

Python學習交流Q群:906715085####
# 打開github首頁
driver.get("https://github.com/login")
driver.implicitly_wait(10)
# 輸入賬號
driver.find_element_by_id("login_field").send_keys("youruser")
# 輸入密碼
driver.find_element_by_id("password").send_keys("yourpsw")
driver.find_element_by_name("commit").click()

 

在這裡插入圖片描述

二、檢查結果

1.登錄完成之後,需要檢查是否登錄成功,這裡就需要有個檢查點,我這邊選擇右上角的賬戶名是不是我剛纔登錄這個賬號

在這裡插入圖片描述

2.先定位到右上角設置,通過.text方法獲取這個元素的文本屬性

3.判斷獲取到的值,與期望結果是否一致

4.符合預期結果測試通過

5.不符合預期結果測試不通過

在這裡插入圖片描述

參考代碼:

Python學習交流Q群:906715085###
# 登錄成功後,獲取我的賬戶名稱
time.sleep(5)
# 點右上角設置
driver.find_element_by_css_selector(".HeaderNavlink.name.mt-1").click()
# 獲取賬戶名稱
time.sleep(1)
t = driver.find_element_by_css_selector(".dropdown-header.header-nav-current-user.css-truncate>.css-truncate-target").text
print("獲取到我的賬戶名稱:%s" % t)

if t == "yoyoketang":
    print("登錄成功!")
else:
    print("登錄失敗!")

 

在這裡插入圖片描述

三、退出登錄

1.測試完之後,別忘了最後退出登錄

2.退出登錄後,關閉瀏覽器
# 點sign out退出登錄
driver.find_element_by_css_selector(".dropdown-item.dropdown-signout").click()
driver.quit()

 

在這裡插入圖片描述

四、登錄函數

1.雖然上面的代碼能實現登錄,但整個代碼跟記流水賬一樣,沒什麼可讀性。如果我想換個賬號登錄,這時候還得找到登錄的賬號和密碼位置,比較費時。

2.我們可以把登錄和退出寫出兩個函數,這樣看起來更舒服一點。

3.把登錄的賬號和密碼參數化
# coding:utf-8
from selenium import webdriver
import time

def login(driver, user, password):
    '''登錄github'''
    
    driver.get("https://github.com/login")
    driver.implicitly_wait(10)
   
    driver.find_element_by_id("login_field").send_keys(user)
   
    driver.find_element_by_id("password").send_keys(password)
    driver.find_element_by_name("commit").click()

def logout(driver):
    '''退出github'''
    time.sleep(3)
    
    driver.find_element_by_css_selector(".HeaderNavlink.name.mt-1").click()
    time.sleep(1)
    # 點sign out
    driver.find_element_by_css_selector(".dropdown-item.dropdown-signout").click()
    driver.quit()

if __name__ == "__main__":
    driver = webdriver.Firefox()
    
    login(driver, "youruser", "yourpsw")
    print("hello  yoyo!")
    
    logout(driver

 

最後

好的東西怎麼能夠不跟大家分享呢?對於案例有不清楚的小伙伴記得評論留言,解決好問題才能更好地

幫助我們接下來的學習。點贊收藏我就不多說了,今天分享的Selenium+python自動化登錄案例到這裡

就要跟大家說再見了。

在這裡插入圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 要寫好一份 B 端產品的技術方案,是非常有挑戰的事情,對最終項目價值達成起到決定性的作用,技術方案質量差可能直接毀滅一塊業務。下麵推薦一份 B 端產品的技術方案模板,供讀者參考。 ...
  • 業務需求 最近公司在做養老相關的業務,現在需要子女從小程式端對家裡的老人通過家庭終端交互屏進行實時看護。 解決方案 第三方的一些現成的服務:騰訊音視頻通話、直播功能; 阿裡的音視頻通信;兩者都挺好的,但是需要收費因此放棄決定自己搭建一套直播流服務; 先看效果(自己伺服器配置低有延遲、放到公司伺服器上 ...
  • 26名學生,每個人可以填寫10個交談對象: 10輪匹配結果: 1、pom.xml <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</sco ...
  • 教程說明 C++高性能網路服務保姆級教程 首發地址 day02 真正的高併發還得看IO多路復用 本節目的 使用epoll實現一個高併發的伺服器 從單進程講起 上節從一個基礎的socket服務說起我們實現了一個基本的socket伺服器,並留了個思考題 先啟動server,然後啟動一個client,不輸 ...
  • LinkedList底層結構 說明 LinkedList底層實現了雙向鏈表和雙端隊列特點 可以添加任意元素(元素可以重覆),包括null 線程不安全,沒有實現同步 操作機制: LInkedList底層維護了一個雙向鏈表 LinkedList中維護了兩個屬性first和last分別指向首節點和尾節點 ...
  • 可改不可改? 常量表達式是指在編譯器編譯時期就可以的到值的表達式,例如:const int a = 3,雖然聽起來很簡單,但實際上很容易犯錯。本文簡要總結它們的不同: 關於const:頂層const和底層const 一般,我們聲明const用來存儲不變的恆定量: const int MAXN = i ...
  • 前言 Python 在程式並行化方面多少有些聲名狼藉。撇開技術上的問題,例如線程的實現和 GIL,我覺得錯誤的教學指導才是主要問 題。常見的經典 Python 多線程、多進程教程多顯得偏"重"。而且往往隔靴搔癢,沒有深入探討日常工作中最有用的內容。 傳統的例子 簡單搜索下"Python 多線程教程" ...
  • 上一篇 https://www.cnblogs.com/redwinter/p/16196359.html 介紹了BeanFactoryPostProcessor的執行過程,這篇文章介紹Spring中配置的註解是如何通過ConfigurationClassPostProcessor解析的,另外分析下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...