我正在学习黄瓜框架,但坚持下面,搜索互联网,但无法得到任何具体的想法。
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)
答案 0 :(得分:1)
正如Daniel上面所说,这取决于你正在使用什么框架。我怀疑你混淆了你的PageFactory / PageObjectModel和Step Definitions文件。将页面对象类与步骤文件分开。
如果你也可以粘贴步骤定义文件,那将是很好的,这样我们就可以看一下。
如果你刚开始使用Cucumber,你也可以按照简单的教程here
答案 1 :(得分:0)
不确定您使用什么框架来运行测试,但您面临的问题来自未初始化的步骤类,在本例中为StepDefinitionFacebookTitle
,因此NullPointerException
。
了解如何使用Before
和After
挂钩来启动和关闭浏览器。有关here的更多信息。
答案 2 :(得分:0)
这取决于您的步骤所在位置以及您提供的作为执行粘合剂值的内容。 我建议尝试QAF gherkin_client。它甚至可以跨多个项目提供简单的配置和重用步骤。您只需要在属性文件或xml配置文件中指定步骤提供包。步骤可能在您的项目中或在其中一个jar中。
例如,这里是属性:
step.provider.pkg=my.steps.pkg