Как запустить Serenity Cucumber BDD в браузере Chrome? - PullRequest
0 голосов
/ 21 октября 2018

Я новичок в Serenity BDD и не уверен, почему мой тест всегда выполняется в Firefox с кодом, который я прикрепил.Добавление переменной веб-драйвера с аннотацией @Managed (driver = "chrome") не имеет никакого значения.Есть ли способ, которым я могу указать платформе запустить браузер Chrome, используя «serenity.properties»?

GoogleSearchTest.feature

Feature: Test google search
      As a user I want to
      search google
  Scenario: Test google search box
    Given the google page is loaded
    When user search for "Gmail"
    Then gmail results should be displayed

DefinitionSteps.java

package com.testserenity.steps;

import cucumber.api.PendingException;
import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.Steps;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

import com.testserenity.steps.serenity.EndUserSteps;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;

import java.util.List;

public class DefinitionSteps {

    @Steps
    EndUserSteps user;

    @Managed(driver = "chrome")
    WebDriver driver;

    @Given("^the google page is loaded$")
    public void theGooglePageIsLoaded() throws Throwable {

       user.opensUpTheAUT("https://www.google.com");
    }
    @Then("^gmail results should be displayed$")
    public void gmailResultsShouldBeDisplayed() throws Throwable {

        user.shouldBeAbleTOFindAllLinksOf("Gmail");

    }

    @When("^user search for \"([^\"]*)\"$")
    public void userSearchFor(String str) throws Throwable {
        user.searchesOnGoogle(str);
        user.hitsKey(Keys.ENTER);
        Thread.sleep(2000);
    }
}

EndUserSteps.java

package com.testserenity.steps.serenity;

import com.testserenity.pages.CommonActions;
import com.testserenity.pages.GooglePage;
import net.thucydides.core.annotations.Step;
import org.openqa.selenium.Keys;
import org.testng.Assert;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;

public class EndUserSteps {

    GooglePage googlePage;
    CommonActions commonActions;


    @Step
    public void searchesOnGoogle(String keyword) {

       googlePage.sendText(keyword);

    }
    @Step    
    public void shouldBeAbleTOFindAllLinksOf(String gmail) {

        Assert.assertNotEquals(googlePage.totalNumberOfLinksWithString("Gmail"),0);


    }
    @Step
    public void opensUpTheAUT(String s) {

        googlePage.open();

    }

    @Step
    public void hitsKey(Keys enter) {

        googlePage.keyboardActions(enter);
    }


   }

Общие действия. java

package com.testserenity.pages;

import com.google.common.base.Predicate;
import net.thucydides.core.pages.PageObject;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;

/**
 * Created by User on 10/18/2018.
 */
public class CommonActions extends PageObject {

    public CommonActions(WebDriver driver) {
        super(driver);
    }


    public void keyboardActions(Keys enter) {

    }
}

GooglePage.java

package com.testserenity.pages;

import net.serenitybdd.core.pages.PageObjects;
import net.thucydides.core.annotations.DefaultUrl;
import net.thucydides.core.pages.PageObject;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import java.util.List;

/**
 * Created by User on 10/12/2018.
 */
@DefaultUrl("https://www.google.com")
public class GooglePage extends CommonActions{

    public GooglePage(WebDriver driver) {
        super(driver);
    }

    @FindBy(name = "q")
    public WebElement SearchBox;



    @FindBy(xpath = "//*[contains(text(),'Gmail')]")
    public List<WebElement> GmailLinkList;

    public void sendText(String gmail) {

        SearchBox.sendKeys(gmail);

    }

    public Integer totalNumberOfLinksWithString(String s) {
        try {
            Thread.sleep(3000);
        }catch (Exception e){
            e.getStackTrace();
        }
        return this.GmailLinkList.size();
    }

    @Override
    public void keyboardActions(Keys enter) {
        super.keyboardActions(enter);
        this.SearchBox.sendKeys(enter);
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.testserenity</groupId>
    <artifactId>TestSerenityBdd</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Sample Serenity project using Cucumber and WebDriver</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <serenity.version>1.8.3</serenity.version>
        <serenity.cucumber.version>1.6.6</serenity.cucumber.version>
        <webdriver.driver>firefox</webdriver.driver>
    </properties>

    <repositories>
      <repository>
        <snapshots>
        <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>bintray</name>
        <url>http://jcenter.bintray.com</url>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <snapshots>
        <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>bintray-plugins</name>
        <url>http://jcenter.bintray.com</url>
      </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-firefox-driver</artifactId>
            <version>3.14.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>net.serenity-bdd</groupId>
            <artifactId>serenity-core</artifactId>
            <version>${serenity.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.serenity-bdd</groupId>
            <artifactId>serenity-cucumber</artifactId>
            <version>${serenity.cucumber.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.7</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <includes>
                        <include>**/*.java</include>
                    </includes>
                    <argLine>-Xmx512m</argLine>
                    <systemPropertyVariables>
                        <webdriver.driver>${webdriver.driver}</webdriver.driver>
                    </systemPropertyVariables>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>net.serenity-bdd.maven.plugins</groupId>
                <artifactId>serenity-maven-plugin</artifactId>
                <version>${serenity.version}</version>
                <executions>
                    <execution>
                        <id>serenity-reports</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>aggregate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вам нужно удалить Firefox из POM.xml.

вы можете использовать ChromeOptions options = new ChromeOptions ();

options.addArguments ("- window-size = 1920,1080");

options.addArguments (" - window-position = 0,0 ");

Драйвер WebDriver = новый ChromeDriver (опции);

Вы можете использоватьchromeoptions для установки различных свойств Chrome.

0 голосов
/ 24 октября 2018

Вы устанавливаете firefox в своих свойствах pom:

<webdriver.driver>firefox</webdriver.driver>

Либо измените его на 'chrome', либо удалите параметр webdriver из failsafeplugin systemPropertyVariables и обработайте его с помощью управляемой аннотации в коде.

<systemPropertyVariables>
    <webdriver.driver>${webdriver.driver}</webdriver.driver>
</systemPropertyVariables>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...