自動化測驗
- Selenium
- 示例
- selenium webdriver
- selenium IDE
Selenium
Selenium是針對Web應用的開源自動化測驗工具,通過撰寫模擬用戶操作的腳本,它會打開瀏覽器對Web應用進行黑盒測驗,可以方便的用于功能測驗、兼容性測驗、 穩定性測驗及并發測驗,目前已被主流瀏覽器廠商廣泛支持,同時也是很多其它自動化測驗工具(比如,RobotFramework)的底層核心技術,Selenium由IDE、Remote Control(簡稱RC)、WebDriver、Grid四個工程組成:
1、Selenium IDE
是一個用于錄制/回放測驗腳本的Firefox附加組件,錄制的腳本可以生成基于Selenium RC的測驗代碼(python、Java、Ruby、C#等),適用于快速入門,不太適用于實際較大的測驗專案;
2、Selenium RC
RC由Server和Client組成兩部分組成,Server負責加載/關閉瀏覽器以及作為HTTP代理來訪問Web應用,Clinet支持多種編程語言和測驗框架(TestNG、JUnit、NUnit等),
3、Selenium WebDriver
WebDriver作為Selenium2的核心特性提供比RC更簡潔易用的API,是官方推薦的RC替代方案,可以更好的支持動態網頁,不需要再額外啟動一個獨立的Server,
4、Selenium Grid
是Selenium的一個擴展工具,可以很方便地同時在多臺機器上和異構環境中并行運行多個RC或WebDriver用例,
WebDriver
啟動瀏覽器后,selenium-webdriver會將目標瀏覽器系結到特定的埠,啟動后的瀏覽器則作為webdriver的 remote server,
客戶端(也就是測驗腳本),借助ComandExecutor發送HTTP請求給sever端(通信協議:The WebDriver Wire
Protocol,在HTTP request的body中,會以WebDriver Wire協議規定的JSON格式的字串來告訴Selenium我們希望瀏覽器接下來做什么事情),
Sever端需要依賴原生的瀏覽器組件,轉化Web Service的命令為瀏覽器native的呼叫來完成操作,
示例
selenium webdriver


得到對應元素的id,模擬手動搜索hello
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("hello")
driver.find_element_by_id("su").click()
time.sleep(8)
driver.quit()
結果



selenium IDE
在fireFox中使用selenium IDE錄制腳本👇


點擊start開始錄制、接下來就是我們的操作👇


點擊右上角停止錄制👇

點擊run播放錄制👇

匯出錄制腳本、支持多種語言

錄制生成的腳本
# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestHello():
def setup_method(self, method):
self.driver = webdriver.Firefox()
self.vars = {}
def teardown_method(self, method):
self.driver.quit()
def test_hello(self):
self.driver.get("https://www.baidu.com/")
self.driver.set_window_size(1118, 695)
self.driver.find_element(By.ID, "kw").send_keys("hello")
self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)
self.driver.find_element(By.CSS_SELECTOR, ".c-gap-right-xsmall > .op-dict3-repeat").click()
self.driver.find_element(By.CSS_SELECTOR, ".op-dict3-repeat-on").click()
self.driver.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297452.html
標籤:其他

