2016-10-24 123 views
0

我不知道为什么我为以下示例打开了2个Firefox浏览器。有人可以告诉我下面的代码有什么问题。我是黄瓜新手,我正在尝试开发带页面对象模型的黄瓜poc。在黄瓜中自动打开多个浏览器窗口

特征文件:

Scenario: Smoke test for application 
     Given I am on home page 

步骤认定中的文件:

public class HomePageSteps { 

CustomerDetails customerDetails; 

HomePage homePage=new HomePage(); 

public HomePageSteps(CustomerDetails customerDetails){ 
    this.customerDetails=customerDetails; 
} 

@Before 
public void environmentSteup(){ 
    homePage.envSetup(); 
} 

@Given("^I am on home page$") 
public void i_am_on_home_page() throws Throwable { 
    homePage.openURL(); 
} 
} 

实际实现步骤的定义文件的:(HomePage.java)

public class HomePage extends BasePage{ 

public void openURL() { 
    driver.get("https://applicationURL.aspx"); 
    System.out.println("I am on home page executed"); 
} 

public void envSetup() { 
    driver=new FirefoxDriver(); 
    driver.manage().window().maximize(); 
} 
} 

BasePage.java

public abstract class BasePage { 
protected WebDriver driver=new FirefoxDriver(); 
} 

CustomerDetails.java

public class CustomerDetails { 
private String mdn=null; 

private String Fname=null; 

private String Lname=null; 

public String getMdn() { 
    return mdn; 
} 

public void setMdn(String mdn) { 
    this.mdn = mdn; 
} 
} 

2 Firefox浏览器打开: 首先,它会打开一个空白的浏览器。之后它会打开另一个浏览器,并在此浏览器中打开应用程序URL。

回答

1

你有两个调用打开浏览器窗口...

一旦在子类中envSetup() - driver=new FirefoxDriver();

而且在与初始化超类驱动变量的声明 - protected WebDriver driver=new FirefoxDriver();

你必须删除其中的一个,不需要超级一个......这是给你空白窗口的那个

0

请参阅此页。你maximize()呼叫envSetup()可能会做更多的比你想象的

In selenium webdriver what is manage() [driver.manage()]

编辑:

你也不需要实例化一个new FirefoxDriver()BasePage因为你已经实例化一个driver场与该对象。任何延伸到BasePage的内容都将有权访问该driver字段。这不是一个问题,你这样做,它只是无关的代码,不需要在那里

相关问题