[JAVA] Effectuer un test d'écran automatique avec Selenide + XlsMapper

Environnement et méthode de mise en œuvre

IDE:eclipse(Oxygen.3) Langue: Java

Jusqu'à la construction de l'environnement Créez un nouveau projet Maven dans eclipse. Entrez le code suivant et exécutez → Maven Install

<dependencies>
  <!-- Selenide -->
  <dependency>
    <groupId>com.codeborne</groupId>
    <artifactId>selenide</artifactId>
    <version>5.9.0</version>
    <scope>test</scope>
  </dependency>

  <!-- JUnit -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
  </dependency>

  <!-- XlsMapper(Lecture Excel) -->
  <dependency>
    <groupId>com.github.mygreen</groupId>
    <artifactId>xlsmapper</artifactId>
    <version>2.1</version>
  </dependency>

la mise en oeuvre

Je vais omettre les détails car je pense qu'il est plus facile de comprendre ce qui est expliqué ailleurs. Je pense que XlsMapper est bien compris dans la documentation officielle. C'était une méthode que j'avais l'habitude de faire personnellement, mais il était facile de coder comment créer une classe de page et de définir les actions qui peuvent être effectuées dans la page. D'ailleurs, avec cette méthode, je sens qu'il est difficile de mettre en œuvre lorsque l'opération qui peut être effectuée sur un écran change de manière dynamique.

PageBase.java


public class PageBase {
  protected SelenideElement hoge() {
    return $("input[name='hoge']");
  }

  protected SelenideElement fuga() {
    return $("input[name='fuga']");
  }
}

Page.java


public class Page extends PageBase {
  //Définissez la valeur sur hoge
  public void setHoge(String hoge) {
    hoge().val(hoge);
  }

  //Cliquez sur fuga
  public void clickFuga(){
    fuga().pressEnter();
  }
}

Cependant, en préparant la classe Page de cette manière, il est possible de l'implémenter en les appelant simplement dans la partie Logic.

Logic.java


public class Logic {
  public void doLogic(String hoge){
    Page pg = new Page();
    //Définissez la valeur sur hoage et cliquez sur fuga
    pg.setHoge(hoge);
    pg.clickFuga();
    //Prendre une capture d'écran
    Selenide.screenshot("hogefuga");
  }
}

Test.java


public class Test {
  @before
  public void setup(){
    //Spécifiez le type de navigateur à ouvrir (IE)
    Configuration.browser = WebDriverRunner.INTERNET_EXPLORER;
    System.setProperty("webdriver.ie.driver", "C:\\eclipse\IEDriver\IEDriverServer.exe");

    //Spécifiez où enregistrer la capture d'écran
    Configuration.reportsFolder = "/sample/testFolder/";
    //Ouvrez le site spécifié dans le navigateur
    open("https://qiita.com");
  }

  @Test
  public void doTest(){
    Logic logic = new Logic();
    logic.doLogic("sample");
  }

  @after
  public void tearDown(){
    //Fermer le navigateur
    Selenide.closeWebDriver();
  }
}

Il s'agit de la mise en œuvre du test d'écran à l'aide de Selenide. Dans le cas ci-dessus, le site est ouvert, "sample" est entré dans l'élément hoge, l'élément fuga est cliqué et le navigateur est fermé. Utilisez maintenant XlsMapper pour définir la valeur de "sample" sur la valeur Excel pré-remplie. Préparez une classe distincte pour l'implémentation de XlsMapper. La méthode d'implémentation diffère selon qu'il existe plusieurs valeurs ou une seule valeur. Premièrement, s'il n'y a qu'une seule valeur, préparez une classe Data.

Data.java


@XlsSheet(name="testSheet")
public class Data{
  @XlsLabelledCell(label="hoge" type=LabelledCellType.Right)
  public String hoge;
}

Test.java


@Test
public void doTest(){
  XlsMapper xlsMapper = new XlsMapper();
  Data data = xlsMapper.load(
                        new FileInputStream("testExcel.xlsx"),
                        Data.class);

  Logic logic = new Logic();
  logic.doLogic(data.hoge);
}

En implémentant de cette manière, vous pouvez récupérer la valeur Excel. S'il existe plusieurs valeurs, créez une classe Sheet et une classe Data, et implémentez le chargement de données en chargeant la classe Sheet.

Sheet.java


@XlsSheet(name='testSheet')
public class Sheet {
  @XlsHorizontalRecords(tableLabel="Liste de données", recordClass=Data.class)
  public List<Data> dataList;
}

Data.java


public class Data {
  @XlsColumn(columnName="hoge")
  @XlsTrim
  public String hoge;
}

Test.java


@Test
public void doTest(){
  XlsMapper xlsMapper = new XlsMapper();
  Sheet sheet = xlsMapper.load(
                        new FileInputStream("testExcel.xlsx"),
                        Sheet.class);

  Logic logic = new Logic();
  for(Data data : sheet.dataList){
    logic.doLogic(data.hoge);
  }
}

De cette manière, la logique pivote du nombre de List dans la classe Sheet. Avec cette méthode de mise en œuvre, la spécification est de "répéter la même opération un certain nombre de fois sur le même écran".

Résumé

Il est efficace lorsque vous souhaitez obtenir des preuves en appuyant plusieurs fois sur les touches d'un écran, mais cette méthode de mise en œuvre est faible dans le cas d'un test où vous appuyez une fois sur les touches sur plusieurs écrans. C'est comme ressentir. Je l'ai codé pour ITa, mais il a en fait été utilisé pour vérifier l'affichage de l'écran qui accompagne la mise à jour de la base de données, donc je pense que je l'ai implémenté incroyablement faiblement. Je n'ai pas tellement révisé le code et les articles, mais je peux en faire une forme pour le moment.

Recommended Posts

Effectuer un test d'écran automatique avec Selenide + XlsMapper