多个浏览器窗口在黄瓜中自动打开

时间:2016-10-24 14:24:35

标签: java selenium selenium-webdriver cucumber

我不知道为什么我要为下面的示例打开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。

2 个答案:

答案 0 :(得分:3)

您有两次打开浏览器窗口的电话......

进入envSetup()中的子类 - driver=new FirefoxDriver();

在带有初始化的超类驱动程序变量声明中 - protected WebDriver driver=new FirefoxDriver();

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

答案 1 :(得分:1)

请参阅此页面。 maximize()中的envSetup()来电可能比您想象的要多

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

编辑:

您还不需要在new FirefoxDriver()之外实例化BasePage,因为您已经使用该对象实例化了driver字段。任何延伸BasePage的内容都可以访问该driver字段。你这样做不是问题,它只是不必要的无关代码