2016-12-03 4 views
0

Wir verwenden @FindBy Annotation für Get Web-Element mit Page Object Modeling-Konzept.Ausführungsreihenfolge der vererbten Klasse und der @FindBy-Klasse

z.B.

@FindBy(xpath = "//input[@type='text'][@placeholder='Search']") 
WebElement searchBox; 

aber um searchBox Element zu erhalten müssen wir PageFactory.initElements(driver, this); zuerst und dann, nachdem wir auf dieses Element Aktionen ausführen können anrufen.

Ich habe Rahmenakfiling unten entworfen.

Geordnete Klasse:

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.support.PageFactory; 

import core.driver.WebDriverManager; 

public abstract class BasePO { 

    static { 
     System.out.println("Static Block"); 
    } 

    BasePO() { 
     System.out.println("initElements"); 
     initElements(); 
    } 

    private void initElements() { 
     PageFactory.initElements(getDriver(), this); 
    } 
} 

Kinderklasse:

import org.openqa.selenium.WebElement; 
import org.openqa.selenium.support.FindBy; 

public class TestPO extends BasePO{ 
    @FindBy(css = "input[title='Search']") 
    WebElement searchBox; 

    @FindBy(css = "input[value='Google Search']") 
    WebElement searchButton; 

    public void sendKeys(String inputText){ 
     searchBox.sendKeys(inputText); 
    } 

    public void clickOnSearchButton(){ 
     searchButton.click(); 
    } 
} 

Testklasse:

import org.testng.annotations.Test; 

import core.pageobject.TestPO; 

public class TestClass{ 
    @Test 
    public void test123() { 
     driver = new FirefoxDriver(); 
     driver.get("http://www.gsmarena.com/"); 
     TestPO tpo = new TestPO(); 
     tpo.search("iphone 7"); 
    } 
} 

Wenn ich den Testfall ausführen: test() dann nach mir Hinrichtungen Schritte wären:

  1. Firefox-Treiber erstellt [in Testclass]
  2. Website wird in Firefox-Browser öffnen [in Testclass]
  3. @FindBy Anmerkungen im Speicher aufgerufen werden würde zuerst oder geladen (ich denke, es ist ein träges Laden ist) [in TESTPO]
  4. Static Block [in BasePO]
  5. initElements [in BasePO]
  6. WebElement von searchbox zugegriffen und Aktion Sendkeys werden kann auf die durchgeführt werden [in Testclass]

Aber wenn ich richtig bin nicht dann, wenn @FindBy Anmerkungen genannt würde und was die Ausführungsreihenfolge

+0

Warum nicht versuchen, Debug-Punkte auf alle oben genannten. Und sehen Sie sich die Ausführungsreihenfolge an, die Sie wünschen. – nullpointer

Antwort

0

wäre Ausführungsreihenfolge wird:

  1. Firefox-Treiber erstellt [in Testclass]
  2. Website wird in Firefox-Browser öffnen [in Testclass]
  3. Static Block [in BasePO]
  4. initElements [in BasePO]
  5. @FindBy Annotationen initialisiert (Initialization in PageFactory.java definiert sind) würde [in TESTPO]
  6. WebElement von searchbox zugegriffen und Tastaturbefehle Aktion kann sein durchgeführt an diesem [in TestClass]
Verwandte Themen