【发布时间】:2019-07-12 06:28:39
【问题描述】:
我的功能文件包含一个功能,需要每个步骤定义文件一次又一次地重复使用。如何管理代码
我的特点是:- “用户在主页上”。
上述功能/场景包含需要一次又一次重用的代码。在我的代码库中,对于每个功能文件,我都编写了单独的步骤定义。
我的第一步定义文件:-
@Given ("^user is on HomePage$")
public void user_homePage()
{
configFileReader =new ConfigFileReader();
System.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");
driver=new ChromeDriver();
driver.get("https://parabank.parasoft.com/parabank/index.htm");
driver.manage().window().maximize();
}
现在需要在另一个步骤定义文件中使用相同的功能。 IE 在下面
在用户点击“注册”链接之前,它应该验证用户是否在主页上。 “用户在主页上”的描述在第一步定义文件中定义。
现在如何在这里管理代码:-
下面是我的第二步定义文件:-
导入 StepFiles.ParaBank_TC_01_Step; [我什至导入了第一步定义文件,因此可以执行“用户在主页”功能。 ]
public class ParaBank_TC_02_Step {
public WebDriver driver;
ConfigFileReader configFileReader;
@When ("^user clicks on register link$")
public void click_register() throws InterruptedException
{
Thread.sleep(3000);
WebElement register_link= driver.findElement(By.xpath("//a[contains(text(),'Register')]"));
register_link.click();
}
实际结果:- 1. 当我在一个文件中编写 2 个功能文件的所有步骤定义时,它执行得非常好,因为功能“用户在主页上”是在同一个文件中定义的。
- 当我在另一个 java 文件中为功能 2 编写单独的步骤定义时。它向我显示“空指针异常”错误,因为在功能“用户在主页上”> 驱动程序在 1 步 def 文件中初始化。它没有为第二步定义文件执行。
请帮助我了解此问题的根本原因并提供最佳解决方案。
【问题讨论】:
-
我什至在步骤“用户在主页”上使用了“@Before”注释,以便可以在每个方法之前执行。
-
您应该在步骤之外初始化驱动程序,然后给定的步骤就是 driver.get(uri)