-3

below is the project structure:

project structure

Before After class

    Test Runner class:
    package runnerPackage;

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

    @RunWith(Cucumber.class)
    @CucumberOptions(   plugin = {"html:target/cucumber-html-report",
    "json:target/cucumber.json",
    "pretty:target/cucumber-pretty.txt",
    "usage:target/cucumber-usage.json"
     }, 
    features="classpath:MyFirstApp.feature",glue={"stepDefinitions"},tags=
    {"@sceneOne1"})
    public class TestRunner {

    }
Feature file :
@tag

Feature: Test HDFC

@sceneOne1

Scenario: Test HDFC

Given I open HDFC Bank home page and click on 'Login' button

***********************************************
Step Definition :

package stepDefinitions;

import pages.MyFirstMethod;

import cucumber.api.java.en.Given;

public class MyFirstStepDefinition {


    MyFirstMethod m=new MyFirstMethod();

    @Given("^I open HDFC Bank home page and click on 'Login' button$")

   public void iOpenHDFCBankHomePageAndClickOnLoginButton() throws 

    Throwable {

    m.clickOnElement();

    }
 }
**********************************************
Before After class:

package runnerPackage;

import org.openqa.selenium.chrome.ChromeDriver;

import pages.ConfigReadFile;

import pages.PageInstances;

import cucumber.api.Scenario;

import cucumber.api.java.After;

import cucumber.api.java.Before;

public class BeforeAfter extends PageInstances{

@Before
public static void runBefore(Scenario scenario)
    {
    System.setProperty("webdriver.chrome.driver", "D:\\chromedriver_win32_2.26\\chromedriver.exe");
    System.out.println("reached here");
    driver=new ChromeDriver();
    System.out.println(ConfigReadFile.URL);
    driver.get(ConfigReadFile.URL);

    }
    @After
    public static void runAfter()
    {
    System.out.println("do noting");
    }

}
**********************************************************
Page Instances:
package pages;

import org.openqa.selenium.WebDriver;

public class PageInstances {
    protected static WebDriver driver;

}

Method: package pages;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By; import org.openqa.selenium.interactions.Actions;

public class MyFirstMethod extends PageInstances{

public void clickOnElement()
{
    Actions action=new Actions(driver);
    action.moveToElement(driver.findElement(By.xpath(".//*[@id='cee_closeBtn']/img[@alt='Close']"))).click();
    action.perform();
    //driver.findElement(By.xpath(".//*[@id='cee_closeBtn']/img[@alt='Close']")).click();
    driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
    driver.findElement(By.id("loginsubmit")).click();
    System.out.println(driver.getCurrentUrl());
    //loginButton.click();

} }

Configuration xml:
<ConfigurationFile.xml>

<url>some random url</url>

</ConfigurationFile.xml>

Configuration Read File :

package pages;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;

public class ConfigReadFile {

public static final String URL;

static {


File f=new File("file path");

DocumentBuilderFactory 

docbuildFactory=DocumentBuilderFactory.newInstance();

DocumentBuilder builder = null;

try {
builder = docbuildFactory.newDocumentBuilder();
} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block

e1.printStackTrace();

}
Document doc = null;
try {
 doc = builder.parse(f);
 } catch(Exception es)
{

}
URL=doc.getElementsByTagName("url").item(0).getTextContent();

System.out.println(URL);
}
}

I want to open chrome browser and hdfc link for each secnario so I have annotated it with @before

12
  • 1
    Do not post a link to a code's screenshot... Please enter the code here Commented May 9, 2017 at 10:18
  • Just by looking at the pictures. You don't have any tests to run, do you? Does the before and after methods really execute then? Commented May 9, 2017 at 10:18
  • 2
    @user7985169 change your question, do not post the code as comment Commented May 9, 2017 at 10:19
  • I'm not able to run a test class if an @Before annotated method is static or has parameters. Commented May 9, 2017 at 10:23
  • sorry I am unable to post code it's showing error Commented May 9, 2017 at 10:28

1 Answer 1

0

should mention glue={"stepDefinitions","runnerPackage"} so that it loads hooks class

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.