Groovy, Selenium, Cucumber, добавление аргументов ChromeOptions - PullRequest
0 голосов
/ 15 октября 2019

Я хотел создать BaseTest.groovy, где я реализую Webdriver в режиме без головы.

package api

import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions

class BaseTest{
    ChromeOptions chromeOptions = new ChromeOptions()
    chromeOptions.addArguments(["--headless", "--no-sandbox"])
    static WebDriver driver = new ChromeDriver(chromeOptions)
}

У меня есть файл пошаговых определений LoginSteps.groovy

package stepDefinitions

import api.Helper.helper
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions

import static cucumber.api.groovy.EN.*

Given(~/^I am on the xyz login page$/) { ->
    helper.setPage("https://xyzTestpage.com/")
}

When(~/^I sign in as "([^"]*)"$/) { String arg1 ->
    helper.signIn("username","password")
}

Then(~/^I load the homepage$/) { ->
    helper.setPreset()
}

И у меня естьФайл helper.groovy, в котором я реализую методы

package api.Helper

import api.BaseTest
import api.Xpaths.LoginPageXpaths
import api.Tools.tools
import org.openqa.selenium.By
import org.openqa.selenium.WebElement

class helper extends BaseTest {

    static void setPage(String url){
        driver.get(url)
    }

    static void signIn(String username, String password){

        WebElement uname = driver.findElement(By.xpath(LoginPageXpaths.userNameField()))
        uname.sendKeys(username)

        WebElement pwd = driver.findElement(By.xpath(LoginPageXpaths.passWordField()))
        pwd.sendKeys(password)

        WebElement loginButton = driver.findElement(By.xpath(LoginPageXpaths.loginButton()))
        loginButton.click()
    }

    static void setPreset(){
        WebElement multiCountry = driver.findElement(By.xpath(LoginPageXpaths.multiCountryButton()))
        multiCountry.click()

        WebElement openButton = driver.findElement(By.xpath(LoginPageXpaths.openButton()))
        openButton.click()

        String inputWindow = driver.getWindowHandle()

        for(String loggedInWindow : driver.getWindowHandles()){
            driver.switchTo().window(loggedInWindow)
        }

        WebElement lineItem = driver.findElement(By.xpath(LoginPageXpaths.calculateButtonXpath()))
        tools.waitForElementToBeClickable(driver,lineItem,25)
        driver.quit()
    }
}

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

1 Ответ

0 голосов
/ 15 октября 2019

Можете ли вы попробовать добавить аргументы отдельно, как показано ниже, и запустить его

class BaseTest{
        ChromeOptions chromeOptions = new ChromeOptions()
        chromeOptions.addArguments("--headless");
     chromeOptions.addArguments("--no-sandbox");
        static WebDriver driver = new ChromeDriver(chromeOptions)
    }
...