2017-01-13 7 views
1

に機能のすべてのキュウリのシナリオを実行している私は、それがブラウザの別のスレッドを開き、1シナリオの実行を終了するとき、今、それを第二scenario.Rightを実行するcucumbeたいです第2のシナリオを実行しない。私は別のスレッドを開こうとしません、私は1つのブラウザのスレッドで1番目の後に2番目のシナリオを実行したい。1つのシナリオの仕上げが実行するときに2つのシナリオを持って、私は機能の下に持っている1つのブラウザセッション

特集:私は連絡先が

シナリオの概要をリンクを使用して新しい連絡先を挿入する、ユーザーとして新しい連絡先 を追加します。リンクをユーザーがクリックすると新しい連絡先を作成する場合の連絡先に 考えるユーザーがクリックは をリンクする新しい連絡先を挿入 ユーザーは として最初に名前を入力し、ユーザーが として最後の名前を入力し、ユーザーが として電子メールを入力すると、ユーザは次に、ユーザはメッセージが表示されるはずのボタン 保存をクリックし とユーザーとして庁に入る「接触が正常に保存されました。」以下

Examples: 

    |first_name||last_name||email||Agency| 
    |test2 |  | test3  ||[email protected]||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

のplsはあなたのコードは、これが役立つことも更新! –

+0

以下の行は同じブラウザでクリックされていません@Given( "^ユーザーが新しいユーザー$を作成するのをクリックします") public void userClicksOnCreateNewUser()throws Throwable { contact.click_onCreateNewUser(); –

+0

@RehanShahidドライバを作成するコードは含まれていません。すべてのコードを含めてください。 – MikeJRamsey56

答えて

1

です。最初のシナリオで作成されたブラウザインスタンスは、このように2つ目のシナリオの実行時には開いたままその上に終了()メソッドの実行を持っていたことがないので、私は@After方法が表示されません。

これを処理するには、2つの一般的な方法があります。

  1. 閉じる(終了())@After方法でブラウザインスタンス新鮮一方が第2のシナリオの開始時に作成することができます。

  2. はあなたのドライバの作成の周りのテストを持っており、(ドライバ== null)の場合のみ、新しいインスタンスを作成します。 2番目のシナリオは、最初のシナリオと同じブラウザセッションを再利用します。含めてください:。

    driver.manage()deleteAllCookies();