Nachdem Sie die Funktion der Anwendung entwickelt haben, führen Sie einen ** Integrationstest (Integrationstest) ** durch, um zu sehen, wie sie mit anderen Funktionen gut funktioniert und wie sie sich verhält. Lassen Sie uns dieses Mal einen einfachen Integrationstest einer in Java entwickelten Webanwendung automatisieren, anstatt visuell (es ist natürlich) ** Selenide + [ChromeDriver]( Ich werde mit https://chromedriver.chromium.org) ** arbeiten.
macOS Catalina 10.15.4 IntelliJ IDEA 2018.3.6 Google Chrome 81.0.4044.138 Selenide 5.2.2 aShot 1.5.3
Beschreiben Sie die Bibliothek, die in pom.xml verwendet werden soll.
pom.xml
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>5.2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.ashot</groupId>
<artifactId>ashot</artifactId>
<version>1.5.3</version>
</dependency>
Laden Sie dann den Treiber herunter, um den Chrome-Treiber zu verwenden. (Link unten) https://chromedriver.chromium.org
・ Chrome-Treiberpfadeinstellung -Erstellen einer ChromeDriver-Instanz Jetzt können Sie Chrome automatisch mit Selenide bedienen.
System.setProperty("webdriver.chrome.driver", "<Fahrerpfad>/chromedriver");
WebDriver webDriver = new ChromeDriver();
Schließen Sie das Fenster, indem Sie in die letzte Zeile close () schreiben.
webDriver().close();
Die für den Test erforderlichen grundlegenden Vorgänge werden nachstehend erläutert.
webDriver.get("https://hoge.com/");
Es gibt eine andere Methode.
webDriver.navigate().to("https://hoge.com/");
[Ergänzung] Sie können sich get () und navigieren (). To () als fast dieselbe Methode vorstellen. Der Unterschied zwischen beiden ergibt sich bei der Arbeit mit SPAs (Single-Page-Anwendungen). In SPA aktualisiert get () die Seite und die Übergänge, während Sie mit navigieren (). To () -Übergängen, ohne die Seite zu aktualisieren. get () speichert weder den Browserverlauf noch Cookies, navigieren Sie (). In SPA können Sie mit navigieren (). To () Tests durchführen, die näher am menschlichen Betrieb liegen.
Rückkehr
webDriver.navigate().back();
mach weiter
webDriver.navigate().forward();
aktualisieren
webDriver.navigate().refresh();
HTML-ID-Element abrufen
webDriver.findElement(By.id("hoge"));
Sie können das Klassenelement angeben, es wird jedoch empfohlen, die ID abzurufen, da das Erfassungsergebnis häufig nicht eindeutig ist.
Holen Sie sich das HTML-ID-Element der Schaltfläche und klicken Sie auf
webDriver.findElement(By.id("hoge")).click();
Holen Sie sich das HTML-ID-Element des Formulars und geben Sie es mit sendkeys () ein.
webDriver.findElement(By.id("hoge")).sendKeys("Hogehoge");
Das Verhalten wird zeichenweise eingegeben, als ob es tatsächlich auf dem Bildschirm eingegeben würde.
Holen Sie sich das HTML-ID-Element des Formulars und löschen Sie es mit clear ()
webDriver.findElement(By.id("hoge")).clear();
Dies ist praktisch, wenn Sie die vorhandenen Eingabeinhalte im Wertaktualisierungsprozess löschen möchten.
Die Seitengröße wird minimiert, sodass der gesamte Bildschirm in der ersten Zeile angezeigt werden kann. Wenn Sie es nicht minimieren, passt Chrome die Fenstergröße automatisch an, sodass der gesamte Bildschirm nicht gut aussieht. Der Pfad des Bildes wird in der dritten Zeile angegeben.
webDriver.manage().window().setPosition(new Point(-2000, 0));
Screenshot screenshot = new AShot()
.shootingStrategy(ShootingStrategies.viewportPasting(100))
.takeScreenshot(webDriver);
ImageIO.write(screenshot.getImage(), "PNG", new File("<Bildspeicherpfad>/<Bildname>.png "));
** 【Testszenario】 **
System.setProperty("webdriver.chrome.driver", "hoge/chromedriver");
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://hoge.com/home");
webDriver.findElement(By.id("email")).sendKeys("[email protected]");
webDriver.findElement(By.id("password")).sendKeys("pass");
webDriver.findElement(By.id("loginButton")).click();
webDriver.navigate().to("https://hoge.com/edit?topicId=1");
webDriver.findElement(By.id("topicName")).clear();
webDriver.findElement(By.id("topicName")).sendKey("Beitrag 2");
webDriver.findElement(By.id("updateButton")).click();
webDriver.manage().window().setPosition(new Point(-2000, 0));
Screenshot screenshot = new AShot()
.shootingStrategy(ShootingStrategies.viewportPasting(100))
.takeScreenshot(webDriver);
ImageIO.write(screenshot.getImage(), "PNG", new File("hoge/screenshot.png "));
webDriver.close();
Selbst wenn ich mit Selenid suche, kommen Informationen zu Python anstelle von Java heraus, also habe ich sie zusammengefasst. Das Integrationstestbeispiel ist ein imaginärer Test einer imaginären Webanwendung. Vielen Dank.
・ Unterschied zwischen webdriver.get () und webdriver.navigate () ・ Selenium-Kurzreferenz
Recommended Posts