Selenium簡介與使用教程&項目實戰


作者:White Song

Blog: https://blog.yilon.top

cover selenium

介紹

相關文章:以后再有人問你selenium是什么,你就把這篇文章給他

如果有耐心,可以詳細閱讀上方文檔,下面是精煉概要

如今,大多數軟件應用都是跑在瀏覽器中的網站應用。不同公司和組織之間的測試效率迥異。在這個富交互和響應式處理隨處可見的時代,很多組織都使用敏捷的方式來開發,因此測試自動化也成為軟件項目的必備部分。測試自動化意味着使用軟件工具來反復運行項目中的測試,並為回歸測試提供反饋。

自動化測試,就是把手工進行的測試過程,轉變成機器自動執行的測試過程。該過程,依舊是為了發現錯誤而執行。因此自動化測試的關鍵在於“自動化”三個字。自動化測試的內容,也就相應的轉變成如何“自動化”去實現原本手工進行的測試的過程。

自動化測試可以涉及和試用的范圍主要在以下方面:

  • 基於Web UI的瀏覽器應用的界面測試
  • 基於WebService或者WebAPI的服務契約測試
  • 基於WCF.net remotingSpring等框架的服務的集成測試
  • 基於APP UI的移動應用界面測試
  • 基於JavaC#等編程文件進行的單元測試

基於Web UI的自動化測試工具主要有兩大類:付費的商業版工具和免費使用的開源版工具。典型的有兩種:

  • UFT,QTP被惠普收購以后的新名稱。
    • 通過程序的錄制,可以實現測試的編輯
    • 錄制的測試腳本是 VBScript 語法
    • 成熟版的商業付費工具
    • 工具比較龐大,對具體的項目定制測試有難度
  • SELENIUM,本次選擇的開源工具
    • 本身不是測試工具,只是模擬瀏覽器操作的工具
    • 背后有 Google 維護源代碼
    • 支持全部主流的瀏覽器
    • 支持主流的編程語言,包括:Java、Python、C#、PHP、Ruby、JavaScript等
    • 工具很小,可以實現對測試項目的定制測試方案
    • 基於標准的 WebDriver 語法規范

Selenium 是開源的自動化測試工具, 應該是最廣泛使用的開源方案。它主要是用於Web 應用程序的自動化測試,不只局限於此,同時支持所有基於web 的管理任務自動化。

Selenium 是用於測試 Web 應用程序用戶界面 (UI) 的常用框架。它是一款用於運行端到端功能測試的超強工具。您可以使用多個編程語言編寫測試,並且 Selenium 能夠在一個或多個瀏覽器中執行這些測試。

教程

Selenium 中文文檔

Selenium with Python中文翻譯文檔

以下是Python使用Selenium個人學習心得

webdriver使用配置

在使用WebDriver來操作瀏覽器時,請先下載相應的driver

from selenium import webdriver
driver = webdriver.Chrome()

各瀏覽器Driver下載地址

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox: https://github.com/mozilla/geckodriver/releases
Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

使用時可直接指定driver的路徑,也可將路徑添加到瀏覽器的Application目錄下,然后將該路徑添加到PATH中.

from selenium import webdriver
driver = webdriver.Chrome("./chromedriver")

實戰

使用Python + Selenium,自動發布博客文章。

文章格式建議為Markdown格式。

發布個人博客

博客簡介

  • 博客名稱: 風吟
  • 使用Halo開源框搭建,使用主題為寒山
  • 此博客為個人技術學習分享所建,歡迎來踩踩~(* ̄︶ ̄)

相關代碼

測試文件

元數據最好設置成yaml格式

---
title: 自動發布測試文章
date: 2020-03-20
categories: ["測試"]
summary: "摘要信息"
author: White Song
tags: ["標簽"]
cover: https://img.yilon.top/blog/cld3w.jpg
blog: https://blog.yilon.top
---

### 自動發布

自動發布文章正文測試。。

### 參考地址

> [分吟 - 博客](https://blog.yilon.top/)

主入口

核心方法

代碼太多,在這里就不粘貼了。

詳細可見Github地址:blog-auto-sender

常見問題匯總

  1. 可以使用get_attribute方法進行調試

    button = self.driver.find_element_by_xpath("//button[@type='button']")
    button.get_attribute("class")
    
  2. 編寫前可以先考慮人的正常操作,然后執行相應的步驟。如鼠標懸停

    ActionChains(self.driver).move_to_element(ele).perform()
    
  3. 打開本地html文件

    from selenium import webdriver
    
    driver = webdriver.Firefox(executable_path="data/driver/geckodriver")
    driver.get("file://${文件絕對路徑}")
    
  4. find_element_by_xpath方法元素是從下標1開始。

  5. 對於ajax等需要異步請求的組件,使用WebDriverWait, 才可以正確取到元素

  6. 讓當前的元素滾動到瀏覽器窗口的可視區域內。

    #當傳入參數為分別為true與false時,當點擊右側的按鈕時,紅色的div會貼近可視區域的頂部或底部。
    self.driver.execute_script("arguments[0].scrollIntoView(false);", button)
    
  7. 由於某些編輯器對輸入有自動格式化,可通過模擬復制粘貼的方式解決

    # 前置安裝
    pip install --upgrade --force-reinstall PyObjC PyObjC-core
    
    # 若安裝不了,請使用安裝包:python setup.py install
    # https://github.com/SavinaRoja/PyUserInput/wiki/Installation
    pip install PyUserInput
    
    
    pyperclip.copy(self.content)
    k = pykeyboard.PyKeyboard()
    ele_edit.send_keys(Keys.CONTROL, 'a')
    ele_edit.send_keys(Keys.RETURN)
    time.sleep(1)
    # ele_edit.send_keys(Keys.CONTROL, 'v')
    k.press_keys(['Command', 'v'])
    k.press_keys(['Return'])
    time.sleep(1)
    
  8. 在python執行過程中,提示selenium.common.exceptions.WebDriverException: Message: TypeError: can't access dead object

    原因是代碼中用到了frame,獲取元素前需要切換到frame才能定位到元素,否則無法定位到元素.

    在查找元素前加一句driver.switch_to_default_content() 退出frame

    self.driver.switch_to.default_content()  # 退出frame,沒有這一句后續的元素定位會出錯
    rite_blog = WebDriverWait(self.driver, self.timeout).until(lambda d: d.find_element_by_xpath("/html/body/div[1]/div/div/ul/li[@class='write-bolg-btn']/a"))
    

項目地址

Github地址:blog-auto-sender


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM