在多个要素文件中重复相同步骤但不能使用

时间:2017-09-29 09:09:02

标签: java selenium cucumber

我正在学习黄瓜框架,但坚持下面,搜索互联网,但无法得到任何具体的想法。

Feature File 1:

Feature: Facebook title
#Scenario 1
Scenario: Verify the facebook title
Given the user is navigated to FB login page
Then the title should be correct
And close the browser

Feature File 2:

Feature: Google title
Scenario: Verify google title
Given user is navigated to google
Then verify the title
And close the browser

StepDefinitionGoogleTitle.java -code

public class StepDefinitionGoogleTitle extends setupchrome {
static WebDriver driver = setup();
@Given("^user is navigated to google$")
public void navitaetoGoogle() throws Throwable {
driver.get("https://www.google.com");
}
@Then("^verify the title$")
public void verifytheTitle() throws Throwable {
Assert.assertEquals("Title is not as expected","Google",driver.getTitle());
}
@When("^enter something and search$")
public void searchTesxt() throws Throwable {
driver.findElement(By.id("lst-ib")).sendKeys("akash");
driver.findElement(By.id("lst-ib")).sendKeys(Keys.RETURN);
}
@Then("^verify the title after search$")
public void verify_the_title_after_search() throws Throwable {
Assert.assertEquals("Title is not as expected","akash - Google Search",driver.getTitle());
}}

StepDefinitionFacebookTitle.java - code

public class StepDefinitionFacebookTitle extends setupchrome {
WebDriver driver = setup();
@And("^close the browser$")
public void closeTheBrowser() throws Throwable {
driver.close();
}}

setupchrome.java - code

public class setupchrome {
protected static WebDriver driver;
protected static WebDriver setup()
{
if(driver==null)
{
    System.setProperty("webdriver.chrome.driver","E:\\D\\Jar FIles\\chromedriver.exe");
    driver = new ChromeDriver();
}
return driver;
}}

上述特征文件的步骤定义分为两个单独的文件。对于常用步骤关闭浏览器我只在一个文件中编写了该方法,就像我在两个文件中添加方法一样文件它将给出一个编译时错误,指示重复步骤,但在运行该文件时,我收到以下错误消息:

java.lang.NullPointerExceptionatstepDefinition.StepDefinitionFacebookTitle.closeTheBrowser (StepDefinitionFacebookTitle.java:55)at ?.And close the browser(Gmail.feature:6)

3 个答案:

答案 0 :(得分:1)

正如Daniel上面所说,这取决于你正在使用什么框架。我怀疑你混淆了你的PageFactory / PageObjectModel和Step Definitions文件。将页面对象类与步骤文件分开。

如果你也可以粘贴步骤定义文件,那将是很好的,这样我们就可以看一下。

如果你刚开始使用Cucumber,你也可以按照简单的教程here

答案 1 :(得分:0)

不确定您使用什么框架来运行测试,但您面临的问题来自未初始化的步骤类,在本例中为StepDefinitionFacebookTitle,因此NullPointerException

了解如何使用BeforeAfter挂钩来启动和关闭浏览器。有关here的更多信息。

答案 2 :(得分:0)

这取决于您的步骤所在位置以及您提供的作为执行粘合剂值的内容。 我建议尝试QAF gherkin_client。它甚至可以跨多个项目提供简单的配置和重用步骤。您只需要在属性文件或xml配置文件中指定步骤提供包。步骤可能在您的项目中或在其中一个jar中。

例如,这里是属性:

step.provider.pkg=my.steps.pkg

您可以参考qaf-step-by-step-tutorial