我有以下功能,当一个场景完成执行时有2个场景我希望cucumbe运行第二个场景。现在它完成执行一个场景它打开另一个浏览器线程并且不执行第二个场景。我不想打开另一个线程,我想在单个浏览器线程中执行第一个第二个场景。
功能:添加新联系人 作为用户,我想使用“联系人”链接
插入新联系人场景大纲:插入新联系人 给定用户点击联系人链接 当用户点击链接创建新联系人时 用户输入名字为 并且用户输入姓氏 用户输入电子邮件为 用户进入代理商 并且用户单击“保存”按钮 然后,用户应该看到消息“联系人已成功保存。”
Examples:
|first_name||last_name||email||Agency|
|test2 | | test3 ||qa@incircuit.com||0000 - SURPLUS PROPERTY|
Scenario: create new user
Given user clicks on create new user
下面是我的代码
public class insert_contact extends BasePage{
private static Initialize init;
private Insert_Contact contact=new Insert_Contact(driver);
public insert_contact(Initialize init) throws IOException {
super(driver);
init.Setup();
init.getEnvironmentandCustomer();
}
@Given("^user clicks on contacts link$")
public void userClicksOnContactsLink() throws Throwable {
contact.click_contacts_tab();
}
@When("^user clicks on link Create New Contact$")
public void userClicksOnLinkCreateNewContact() throws Throwable {
contact.click_create_contact();
}
@And("^user enters first name as (.+)$")
public void userEntersFirstNameAsFirst_name(String fname) throws Throwable {
contact.clickon_firstname();
this.type(contact.first_name,fname);
}
@And("^user enters the last name as (.+)$")
public void userEntersTheLastNameAsLast_name(String lname) throws Throwable {
contact.clickon_lastname();
this.type(contact.last_name,lname);
}
@And("^user enters the Email as (.+)$")
public void userEntersTheEmailAsEmail(String email_address) throws Throwable {
contact.cickon_email();
this.type(contact.email,email_address);
}
@And("^user enters the Agency as (.+)$")
public void user_enters_Agency_as(String agency){
contact.click_onAgency();
this.type(contact.Agency,agency);
}
@And("^user click on save button$")
public void userClickOnSaveButton() throws Throwable {
contact.clickon_Save();
}
@Then("^user should see message \"([^\"]*)\"$")
public void userShouldSeeMessage(String message) throws Throwable {
Assert.assertEquals("The contact was successfully saved.",verifyTextPresent(By.id("success-message")));
}
@Given("^user clicks on create new user$")
public void userClicksOnCreateNewUser() throws Throwable {
contact.click_onCreateNewUser();
}
}
答案 0 :(得分:1)
您问题的简单答案是每个方案重新运行您的驱动程序创建代码,该代码会创建一个新的浏览器实例。我没有看到@After方法,因此第一个场景创建的浏览器实例从未运行quit()方法,因此在第二个场景运行时保持打开状态。
有两种常用方法可以解决这个问题。
在@After方法中关闭(退出())浏览器实例,以便在第二个场景开始时创建一个新的。
对驱动程序的创建进行测试,并且仅在(driver == null)时创建新实例。然后,第二个场景将重用与第一个场景相同的浏览器会话。一定要包括:
。driver.manage()deleteAllCookies();