[JAVA] Vom Setup bis zur Verwendung des Selenium-Wrappers Selenide

Einführung

Jetzt, da ich Seleniums benutzerfreundlichen Wrapper Selenide kenne, habe ich alles vom Setup bis zur Beispielerstellung zusammengefasst.

Sogar das Beispiel, das tatsächlich funktioniert, ist geschrieben. Wenn Sie es also zum Laufen bringen möchten, versuchen Sie es bitte.

Das Beispiel ist ein einfaches Servlet, das nur den Text anzeigt, den Sie in das Textfeld eingegeben haben, und das Bild des automatisierten Tests sieht folgendermaßen aus: Die Implementierung des Servlets ist in Anhang 2 am Ende dieses Artikels beschrieben.

image.png

Referenz-URL

Die URLs, auf die ich verwiesen habe, lauten wie folgt. Überall war eine sehr gute Referenz. Da die Version von Selenide aktualisiert wurde und der Link unterbrochen wurde, wurde dieser Artikel mit den Informationen ab 2018/01 erstellt.

Was ist Selenid?

Selenide ist ein Wrapper für Selenium, ein UI-Testframework. Der Eindruck, den ich benutzte, schien schnell zu sein und die Lernkosten waren niedrig.

Wenn Sie den Auszug aus der Erklärung von Offizielle Seite http://selenide.org/ kommentieren,

Selenide is a framework for test automation powered by Selenium WebDriver  
that brings the following advantages:

- Concise fluent API for tests
- Ajax support for stable tests
- Powerful selectors
- Simple configuration

(Selenide ist ein auf Selenium WebDriver basierendes automatisiertes Testframework.
Es hat folgende Vorteile:
 -Prägnante und flüssige Test-API
 -Unterstützt Ajax für stabile Tests
 -Leistungsstarke Auswahlfunktion *
* Selektoren wie ID, CSS und Abfrage können verwendet werden.
 -Einfache Einstellung)

Es sieht aus wie.

Einstellungen für die Verwendung von Selenide

Wenn Sie maven verwenden, fügen Sie pom.xml Folgendes hinzu.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>selenideexample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>selenideexample</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
<!--Hier ist die Einstellung von Selenide-->
	<dependency>
	    <groupId>com.codeborne</groupId>
	    <artifactId>selenide</artifactId>
	    <version>4.9.1</version>
	</dependency>
<!--Dies ist die Einstellung von Selenide-->
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>4.12</version>
	</dependency>
  </dependencies>
</project>

Andere Einstellungen wie Gradle und Ivy sind in 1) der Referenz-URL ausführlich beschrieben.

Übrigens kann die neueste Version von Selenide durch Suchen bei Google und Maven Selenide gefunden werden. Sie finden es unter https://mvnrepository.com/artifact/com.codeborne/selenide. Sie können hier auch die Beschreibung der Dipendenz von Maven und Gradle kopieren.

Testcode

Vorbereitung davor

Es ist erforderlich, Seleniums WebDriver und ChromeDriver.exe im Voraus bereitzustellen. Siehe Anhang 3 und Codekommentare am Ende dieses Artikels. Es ist auch in 3) der Referenz-URL geschrieben. (Der Download-Link war jedoch defekt.)

JUnit-Code

Der Java-Testcode ist unten.

EchoJspTest.java


package com.example;

import org.junit.BeforeClass;
import org.junit.Test;

import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.Condition;
//import static com.codeborne.selenide.Condition.*;//Sie können statisch importieren.
import com.codeborne.selenide.Selenide;
//import static com.codeborne.selenide.Selenide.*;//Sie können statisch importieren.
import com.codeborne.selenide.WebDriverRunner;

public class EchoJspTest {
	
	@BeforeClass
	public static void beforeClass() {
		//Standardmäßig wird FireFox verwendet, daher ist Chrome für die Verwendung festgelegt.
		Configuration.browser = WebDriverRunner.CHROME;
		
		//Vorbereitungen
		// 1) <project>/lib/machen.(lib kann ein beliebiger Name und Ort sein)
		// 2)Java Web Driver Client-combined-3.8.1.jar und libs<project>/lib/Platzieren in.
		//Java-Treiber(jar)Ist http://docs.seleniumhq.org/download/Sie können es von herunterladen.
		//    "Selenium Client & WebDriver Language Bindings"Klicken Sie auf den Link Language Java Download.
		// 3) 2)Fügen Sie alle Gläser zum Bibliothekspfad hinzu.
		// 4) <project>/lib/chromedirver.Setzen Sie exe hinein.
		//exe ist https://sites.google.com/a/chromium.org/chromedriver/Sie können es von Downloads herunterladen.
		
		//Chromedriver wie unten.Geben Sie den exe-Pfad in den Systemeigenschaften an.
		System.setProperty("webdriver.chrome.driver", "./lib/chromedriver.exe");
	}
	
	@Test
	public void echoButtonTest() {
		//Selenid beim statischen Import.Und Zustand.Löschen.
		//Es ist besser lesbar, aber ich wage es, den normalen Import zum Lernen zu verwenden.
		Selenide.open("http://localhost:8080/selenideexample/EchoServlet");
		Selenide.$("#input_text").val("Hello World");
		Selenide.$("#echo_button").click();
		Selenide.$("#output_text").shouldHave(Condition.text("Hello World"));
	}

}

In der echoButtonTest-Methode Wählen Sie das Textfeld mit der ID input_text aus und geben Sie den Wert ein. Klicken Sie danach auf die Schaltfläche mit der ID echo_button. Überprüfen Sie dann den Wert des Feldes mit der ID output_text tun.

Ich denke, es wird einfacher zu verstehen sein, wenn Sie sich auch das obige Bild und die JSP im Anhang ansehen.

Punkt

--BeforeClass () führt Folgendes aus:

Zusammenfassung

Wie Sie auf der offiziellen Seite sehen können, war die API leicht zu verstehen und der Test war leicht zu schreiben, und der Test konnte implementiert werden, ohne sich Gedanken über das Öffnen und Schließen des Browsers und das Timeout machen zu müssen.

Blinddarm

1. Dateistruktur des gesamten Projekts

Der Speicherort des obigen Codes und des Servlet-Codes JSP, Web.xml, pom.xml ist wie folgt.


|   pom.xml   ........... ★pom.XML-Datei
|
+---lib   ...............★ Web-Treiber und Chorome-Treiber.Wo du die Exe hinstellst
|   |   chromedriver.exe
|   |   client-combined-3.8.1.jar
|   |
|   `---libs
|           byte-buddy-1.7.5.jar
|           commons-codec-1.10.jar
|           commons-exec-1.3.jar
|           commons-logging-1.2.jar
|           gson-2.8.2.jar
|           guava-23.0.jar
|           httpclient-4.5.3.jar
|           httpcore-4.4.6.jar
|
+---src
|   +---main
|   |   `---java
|   |       `---com
|   |           `---example
|   |                   EchoServlet.java   .....★ Servlet
|   |
|   `---test
|       `---java
|           `---com
|               `---example
|                       EchoJspTest.java   .....★ Testfall
|
`---WebContent
    +---META-INF
    |       MANIFEST.MF
    |
    `---WEB-INF
        |   echo.jsp   ......................... ★JSP
        |   web.xml   .......................... ★web.xml
        |
        `---lib

web.xml ist wie folgt.

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" 
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
	<servlet>
		<servlet-name>selenide-example</servlet-name>
		<servlet-class>com.example.EchoServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>selenide-example</servlet-name>
		<url-pattern>/EchoServlet</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>echo.jsp</welcome-file>
	</welcome-file-list>
</web-app>

2. Testen Sie Servlet und JSP-Code

Das Servlet wird nur mit Get angezeigt, füllt die Werte mit POST und ruft doGet auf.

EchoServlet.java


package com.example;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EchoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		RequestDispatcher dispatcher = req.getRequestDispatcher("WEB-INF/echo.jsp");
		dispatcher.forward(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String val = req.getParameter("echo");
		System.out.println(val);
		req.setAttribute("echo", val);
		doGet(req, resp);
	}
}

Die JSP ist wie im oberen Bild gezeigt. \ <div id = "output_text" > um den Text aufzunehmen Es wird beschrieben als.

echo.jsp


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Echo</title>
</head>
<body>
	<form method="post" action="./EchoServlet">
		<input id="input_text" type="text" name="echo"/>
		<br/>
		<button id="echo_button" type="submit">Echo</button>
		<br/>
		<div id="output_text"><c:out value="${echo}" /></div>
	</form>
</body>
</html>

3. Einrichten von Selenium WebDriver und ChromeDriver.exe

Wenn Sie mit Chrome beginnen möchten, führen Sie die folgenden Einstellungen aus, wie in der Vorbereitung des Testcodes beschrieben.

  1. Laden Sie das Seleniumglas herunter Von http://docs.seleniumhq.org/download/ Befindet sich unter Selenium Client & WebDriver Language Bindings Klicken Sie auf Java herunterladen (nicht oben).  image.png
  2. Fügen Sie das heruntergeladene Glas zum Bibliothekspfad hinzu (Fügen Sie für Eclipse den Build-Pfad mit Add Jar auf der Registerkarte Libraries hinzu.)  image.png
  3. Laden Sie ChromeDirver.exe herunter und platzieren Sie es an einer beliebigen Stelle unter Ihrem Projekt Download von https://sites.google.com/a/chromium.org/chromedriver/downloads

das ist alles.

Recommended Posts

Vom Setup bis zur Verwendung des Selenium-Wrappers Selenide
Von der Einführung bis zur Verwendung von byebug
Vom Ziehen des Docker-Images der Schienen bis zum Starten
Zusammenfassung des Mooses beim Update von JMockit 1.4 auf 1.30
Von der Einführung des Geräts bis zur Erstellung der Benutzertabelle
Wie schreibe ich Scala aus der Perspektive von Java
[Eclipse] Zusammenfassung der Umgebungseinstellungen * Von Zeit zu Zeit aktualisiert
So verhindern Sie, dass editTextPreference von android PreferenceFragmentCompat beschädigt wird
[Ubuntu20.04] Von der ROS-noetischen Installation zur SLAM-Simulation von turtlebot3