Несколько экземпляров браузера при использовании общих шагов в Cucumber Selenium - PullRequest
0 голосов
/ 06 февраля 2019

У меня настроен очень простой тестовый сценарий, который в основном открывает браузер и выполняет некоторую навигацию, и все работает нормально.Когда я разделил некоторые шаги в файле common_steps, открывалось несколько экземпляров браузера (4x), который, в свою очередь, не прошел тест, потому что не удалось найти элементы.

Когда я скопировал общие шаги обратнов исходный файл, тест работает нормально.Я немного сбит с толку, так как не понимаю, как он открывает несколько браузеров, когда в файле возможностей нет лишних шагов или строк, чтобы сказать ему об этом.

Это пример того, как я подошелЭто.Я знаю, что код немного неопрятный и требует таких вещей, как глобальное ожидание и тому подобное, но это будет сделано после того, как я исправлю эту проблему, и эта работа еще не завершена.

Сценарий

Scenario Outline: Navigate through Chrome
Given I opened the home page of "<homeUrl>"
Then navigated to my favourite site of "<myFavUrl>"
Then navigated to the Dojo page
When the full catalog was displayed
And the performance option was selected

Examples:
|homeUrl                        |myFavUrl                                   |
|https:\\www.google.co.uk       |https://www.ministryoftesting.com/         |

Файл констант .

 public class Constant {

    public WebDriver driver;
    public Constant() {
        System.setProperty("webdriver.chrome.driver", "path_to\\chromedriver.exe");
        driver = new ChromeDriver();
    }

    public WebDriver setChromeDriver() {
        if(driver == null) {

            driver = new ChromeDriver();
            driver.manage().window().maximize();
            return driver;
        }else
            return driver;

    }

}

Файл общих шагов .

public class CommonSteps extends Constant {


    @Given("^I opened the home page of \"([^\"]*)\"$")
    public void navigateToHomePage(String url) throws Throwable{
    driver.get(url);
    driver.manage().window().maximize();
    }

    @Then("^navigated to my favourite site of \"([^\"]*)\"$")
    public void navigateToFavourite(String myFavSite) throws Throwable{
        driver.get(myFavSite);
    }

    //To be used in a separate scenario
    @Given("^I opened the home page of Ministry Of Testing$")
    public void quickLinkToMot() throws Throwable{
        driver.get("https://www.ministryoftesting.com/");
        driver.manage().window().maximize();
    }

}

ОпределенныйФайл шагов

    @Then("^navigated to the Dojo page$")
    public void navigateToDojo() throws Throwable{
        WebDriverWait wait = new WebDriverWait(driver, 5000);
        WebElement djLinkParent = driver.findElement(By.id("navbar-collapse"));
        WebElement djLink = wait.until(ExpectedConditions.elementToBeClickable(djLinkParent.findElement(By.linkText("Dojo"))));
        djLink.click();
    }

    @When("^the full catalog was displayed$")
    public void displayFullCatalog() throws Throwable{
        WebDriverWait wait = new WebDriverWait(driver, 5000);
        WebElement fullCatBtn = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("[class='btn btn-xl btn-home']")));
        fullCatBtn.click();
    }

    @And("^the performance option was selected$")
    public void selectPerformance() throws Throwable{
        WebDriverWait wait = new WebDriverWait(driver, 5000);
        WebElement pBtnParent = driver.findElement(By.cssSelector("[class='cat cat2']"));
        WebElement perfLink = wait.until(ExpectedConditions.elementToBeClickable(pBtnParent.findElement(By.xpath("//a[@href='/dojo/lessons?topic=performance']"))));
        perfLink.click();
    }

1 Ответ

0 голосов
/ 06 февраля 2019

Строительство вашего проекта не является правильным.Конструкции могут различаться, но когда вам нужно использовать BDD Cucumber, это означает, что вы хотите его концепцию в своем проекте.Тогда вам нужно следовать современным методам, чтобы сделать это.Пожалуйста, посмотрите ниже.

РЕШЕНИЕ:

Я думаю, что решение вашей проблемы написано здесь .

Этоговорит вам, как создать архитектуру в вашем проекте, потому что я считаю, что ваша архитектура неправильная.

Я думаю, это то, что вы ищете.

...