【问题标题】:Open Browser & Navigate - Java Automated Testing Selenium打开浏览器并导航 - Java 自动化测试 Selenium
【发布时间】:2020-12-28 16:18:10
【问题描述】:
 Feature: Login to Website

  #Login in Chrome
  Scenario: Login using Chrome
  Given I open Chrome
  When I browse to Website
  Then I login to Website using "user1" and "password1"

全局基类

public class base {

public WebDriver driver;
public Properties prop;
public ChromeOptions coptions;

public WebDriver initializeDriver() throws IOException
{

    String browserName= "chrome";
    System.out.println(browserName);
    String pathToDriver = "";

    if(browserName.equals("chrome"))
    {
        pathToDriver = "C:\\Repositories\\automationProject\\webDrivers\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", pathToDriver);
        coptions.addArguments("disable-infobars");
        coptions.addArguments("--start-maximized");
        driver= new ChromeDriver(coptions);
        //execute in chrome driver

    }

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    return driver;
}

登录

public class login extends base {

@Given("^I open Chrome$")
public void iOpenChrome() throws Throwable {
    driver = initializeDriver();
}

@When("^I browse to Website$")
public void iBrowseToWebsite() {
    driver.get("https://www.website.com/");
}

@Then("^I login to Website using \"([^\"]*)\" and \"([^\"]*)\"£\"$")
public void iLoginToWebsiteUsingAnd£(String username, String password) throws Throwable {
    driver.findElement(By.id("UserName")).sendKeys(username);
    driver.findElement(By.id("Password")).sendKeys(password);
    driver.findElement(By.id("btnLogin")).click();
}

}

问题是,在运行此功能时,我收到以下错误,我无法理解为什么会发生这种情况,因为它无法帮助我找出错误所在。

未定义步骤:假设我打开了 Chrome

未定义步骤:当我浏览网站时

未定义步骤:然后我使用“user1”和“password1”登录网站

【问题讨论】:

  • 你用的是什么IDE?
  • @MosheSlavin IntelliJ
  • 看到这个answer

标签: java selenium automated-tests cucumber


【解决方案1】:

可能您的“胶水”与您的测试运行器或配置没有正确对齐。

尝试使用步骤定义的路径编辑“运行 > 编辑配置”中的“胶水”选项。

或者,如果您使用的是测试运行器类,请确保您获得以下信息:

import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "path\\to\\features",
        glue = "stepdefs"
)
public class RunTest {

}

其中stepdefs 是包含您的步骤定义文件的包名称。

【讨论】:

    【解决方案2】:

    您的步骤函数名称错误。您正在遵循对黄瓜无效的 camelCase 方法。您已将 @Given("^I open Chrome$") 步进函数名称写为 i_open_chrome() 而不是 iOpenChrome()。您可以使用Tidy Gherkin chrome 扩展来生成步骤定义。

    有效的示例步骤。

    @Given("^I open Chrome$")
    public void i_open_chrome() throws Throwable {
        throw new PendingException();
    }
    
    @When("^I browse to Website$")
    public void i_browse_to_website() throws Throwable {
        throw new PendingException();
    }
    
    @Then("^I login to Website using \"([^\"]*)\" and \"([^\"]*)\"$")
    public void i_login_to_website_using_something_and_something(String strArg1, String strArg2) throws Throwable {
        throw new PendingException();
    }
    

    【讨论】:

      【解决方案3】:

      你应该通过右键将黄瓜特征文件转换为Stepdefenition文件不要键入代码行

      【讨论】:

        猜你喜欢
        • 2017-09-10
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多