我不知道为什么我要为下面的示例打开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。
答案 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
字段。你这样做不是问题,它只是不必要的无关代码