Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie Selenium, das automatisierte Python-Testtool
Automatisiertes Testen bezieht sich auf die Automatisierung von Softwaretests, das Ausführen von Anwendungen oder Systemen unter voreingestellten Bedingungen, einschließlich normaler und abnormaler Bedingungen, und schließlich die Auswertung der laufenden Ergebnisse. Der Prozess der Umwandlung von menschengesteuertem Testverhalten in maschinelle Ausführung.
Automatisierte Tests umfassen UI-Automatisierung, Schnittstellenautomatisierung und Unit-Test-Automatisierung. Die automatisierte Testplanung nach diesem Pyramidenmodell kann das beste Output-Input-Verhältnis (ROI) automatisierter Tests erzielen und mit geringeren Investitionen gute Vorteile erzielen.
Die größte Investition sollte in Unit-Tests erfolgen und Unit-Tests sollten häufiger durchgeführt werden.
Javas Unit-Testing-Framework ist Junit.
Schnittstellentests sind API-Tests. Im Vergleich zur UI-Automatisierung ist die API-Automatisierung einfacher zu implementieren und stabiler in der Ausführung.
Schnittstellenautomatisierung weist die folgenden Merkmale auf:
Kann in der frühen Phase des Produkts eingreifen, nachdem die Schnittstelle fertiggestellt ist
Der Umfang der Anwendungsfallwartung ist gering.
Geeignet für Projekte mit kleiner Schnittstelle Änderungen und häufige Schnittstellenänderungen
Allgemein Zu den automatisierten Testtools für die Schnittstelle gehören RobotFramework, JMeter, SoapUI, TestNG+HttpClient, Postman usw.
Obwohl die Testpyramide uns vorschreibt, möglichst viele automatisierte Tests durchzuführen Da die API-Schicht so groß wie möglich ist, ist das automatisierte Testen der UI-Schicht näher an den Benutzeranforderungen und dem tatsächlichen Geschäft von Softwaresystemen. Und manchmal müssen wir UI-Layer-Tests durchführen.
Merkmale der UI-Automatisierung:
Eine große Menge an Anwendungsfallwartung
Die Seite ist hochrelevant und muss nach Abschluss der Projektseitenentwicklung eingegriffen werden
UI-Tests eignen sich für Projekte mit kleinen Schnittstellenänderungen
Es gibt viele Test-Frameworks für die UI-Ebene, wie z. B. AutoIT für Windows-Clienttests, Selenium für Webtests, TestPlant, eggPlant, Robot Framework, QTP usw.
Reduzieren Sie den Personalaufwand für Regressionstests, der durch Änderungen oder die mehrphasige Entwicklung großer Systeme verursacht wird, insbesondere wenn Programmänderungen häufig sind Der Effekt ist sehr offensichtlich. Automatisierte Tests erfordern in der Anfangsphase mehr Personal, aber nach Eintritt in die Wartungsphase kann viel Personal eingespart werden. In der späteren Phase des manuellen Testens wird jedoch viel Personal für Regressionstests benötigt
Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。
早期的selenium RC已经被现在的webDriver所替代,可以简单的理解为selenium1.0 +webdriver构成,现在的Selenium2.0。通常情况下,我们使用“Selenium”一词指的是Selenium2.0。Selenium包括Selenium IDE、Webdriver和Selenium Grid三个组件。
分别做一下介绍:
Selenium IDE
Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能回放,编辑和调试测试脚本。在调试过程中,你可以逐步执行或调整执行速度,并可以在底部查看日志以获取错误信息。录制的测试脚本可以以多种语言导出,比如java,C#,Python,Ruby等,方便掌握不同语言的测试人员操作。Webdriver
Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验证。
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 Grid
selenium Grid是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息。可以实现在同一时刻不同服务器上执行不同的测试脚本。
打开Edge-插件-选择selenium IDE:
创建一个新项目,此时左部 Test Case 窗口会有一个Untitled 的测试案例,右键点击重命名为”test”
点击 IDE 的右上部录制按钮(小红点)开始手动录制
在地址栏中输入待测试的网址如http://www.baidu.com,搜索关键词,这时可以看到IDE进行了录制操作。
在页面中点击右键,可以增加检查点。
录制结束后,点击录制按钮(小红点),结束本次手动录制。在selenium IDE 中,选中一个 Test Case,右击选择“Export 导出为test.py文件。
将该脚本在python中运行并调试。
# 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 TestTest(): def setup_method(self, method): self.driver = webdriver.Chrome() self.vars = {} def teardown_method(self, method): self.driver.quit() def test_test(self): self.driver.get("https://www.baidu.com/") self.driver.set_window_size(809, 864) self.driver.find_element(By.ID, "kw").click() self.driver.execute_script("window.scrollTo(0,0)") self.driver.find_element(By.ID, "kw").send_keys("四月是你的谎言") self.driver.find_element(By.ID, "su").click()
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Selenium, das automatisierte Python-Testtool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!