Après avoir développé la fonction de l'application, vous effectuez un ** test d'intégration (test d'intégration) ** pour voir comment cela fonctionne bien avec d'autres fonctions et comment il se comporte. Cette fois, automatisons un simple test d'intégration d'une application Web développée en Java au lieu de visuellement (c'est naturel) ** Selenide + [ChromeDriver]( Je vais faire des travaux pratiques en utilisant https://chromedriver.chromium.org) **.
macOS Catalina 10.15.4 IntelliJ IDEA 2018.3.6 Google Chrome 81.0.4044.138 Selenide 5.2.2 aShot 1.5.3
Décrivez la bibliothèque à utiliser dans pom.xml.
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>
Ensuite, téléchargez le pilote pour utiliser le pilote Chrome. (Lien ci-dessous) https://chromedriver.chromium.org
・ Paramètre du chemin du pilote Chrome -Création d'une instance ChromeDriver Vous pouvez désormais utiliser Chrome automatiquement à l'aide de Selenide.
System.setProperty("webdriver.chrome.driver", "<Chemin du pilote>/chromedriver");
WebDriver webDriver = new ChromeDriver();
Fermez la fenêtre en écrivant close () sur la dernière ligne.
webDriver().close();
Les opérations de base requises pour le test sont expliquées ci-dessous.
webDriver.get("https://hoge.com/");
Il existe une autre méthode.
webDriver.navigate().to("https://hoge.com/");
[Supplément] Vous pouvez penser à get () et naviguer (). To () comme presque la même méthode. La différence entre les deux apparaît lorsque vous travaillez avec des SPA (applications à une seule page). Dans SPA, get () actualise la page et les transitions, tandis que navigate (). To () transitions sans actualiser la page. get () ne conserve pas l'historique du navigateur ou les cookies, naviguez (). pour le faire. Dans SPA, naviguez (). Vers () peut être utilisé pour effectuer des tests plus proches de l'opération humaine.
Revenir
webDriver.navigate().back();
passez
webDriver.navigate().forward();
mise à jour
webDriver.navigate().refresh();
Obtenir l'élément d'identifiant HTML
webDriver.findElement(By.id("hoge"));
Vous pouvez spécifier l'élément de classe, mais il est recommandé d'obtenir l'ID car le résultat de l'acquisition n'est souvent pas unique.
Obtenez l'élément d'identifiant HTML du bouton et cliquez sur
webDriver.findElement(By.id("hoge")).click();
Récupérez l'élément HTML id du formulaire et entrez-le avec sendkeys ()
webDriver.findElement(By.id("hoge")).sendKeys("Hogehoge");
Le comportement est saisi caractère par caractère comme s'il était effectivement saisi à l'écran.
Obtenez l'élément HTML id du formulaire et effacez-le avec clear ()
webDriver.findElement(By.id("hoge")).clear();
Cela est pratique lorsque vous souhaitez supprimer le contenu d'entrée existant dans le processus de mise à jour de la valeur.
La taille de la page est réduite afin que le plein écran puisse être affiché sur la première ligne. Si vous ne la minimisez pas, Chrome ajustera automatiquement la taille de la fenêtre, de sorte que l'écran entier ne sera pas beau. Le chemin de l'image est spécifié dans la troisième ligne.
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("<Chemin de stockage des images>/<Nom de l'image>.png "));
** 【scénario de test】 **
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("Message 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();
Même si je recherche avec selenide, des informations sur Python au lieu de Java sortent, donc je les ai résumées. L'exemple de test d'intégration est un test imaginaire d'une application Web imaginaire. Merci beaucoup.
・ Différence entre webdriver.get () et webdriver.navigate () ・ Aide-mémoire sur Selenium
Recommended Posts