当前位置: 首页 > 知识库问答 >
问题:

cucumber中自动打开多个浏览器窗口

宋高扬
2023-03-14

我不知道为什么我为下面的示例打开了2个火狐浏览器。有人能告诉我下面的代码有什么问题吗?我是cucumber新手,我正在尝试使用页面对象模型开发cucumberpoc。

特征文件:

    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();
}
}

步骤定义文件的实际实现:(首页.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个火狐浏览器:首先它打开一个空白浏览器。后来它打开另一个浏览器,并在此浏览器中打开应用程序URL。

共有2个答案

易扬
2023-03-14

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

selenium webdriver中,什么是manage() [driver.manage()]

编辑:

您也不需要在 BasePage 之外实例化新的 FirefoxDriver(),因为您已经使用该对象实例化了驱动程序字段。任何扩展 BasePage 的内容都将有权访问该驱动程序字段。你这样做不是问题,它只是不需要存在的无关代码

阎裕
2023-03-14

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

一旦进入envSetup()中的子类-<code>driver=new FirefoxDriver()

并且在带有初始化的超类驱动变量声明中-< code > protected web driver driver = new Firefox driver();

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

 类似资料:
  • 我不清楚为什么我在以下示例中打开了3个chrome浏览器。我有一个@Before(cucumber版本)注释,只需在方案运行之前设置一个chrome webdriver实例。据我所知,它应该打开一个浏览器,运行场景(步骤定义),然后使用@Aftercucumber钩关闭。在第三个也是最后一个窗口实际执行步骤之前,打开2个窗口: 步骤定义: 当我单步执行Intellij中的代码时,将调用以下方法:

  • 全局基类 登录名 } 问题是,当运行此功能时,我得到了下面的错误,我不明白为什么会发生这种情况,因为它在错误的位置上没有给我任何帮助。 未定义步骤:给定I打开Chrome 未定义步骤:浏览网站时 未定义的步骤:然后我使用“user1”和“password1”登录网站

  • 我有一个下载操作在我的javascript代码与提供商。 这将触发我的浏览器弹出窗口。我不想这样。 但是我想直接下载。不要显示弹出窗口。

  • 我有这个功能文件 方案概要: 给定用户在我的网站上 当用户是管理员或主控编辑器时 3.用户在 /page/页面 4.和用户单击/标题/链接 5.然后用户应该被带到/目标页面/ 对于“给定用户在我的网站上”,我编写了登录详细信息,这将为场景中的每个示例打开新的浏览器。我希望单一浏览器打开并执行所有示例。有人能帮忙吗

  • 问题内容: 我是angular js的新手,我希望在按下按钮后在浏览器的新窗口中打开PDF文档。 我在前端发出GET请求,在后端有一个Java Rest服务,该服务响应GET并生成PDF。我希望在浏览器中打开此PDF。 如果无法以这种方式打开PDF,那么至少要使用AngularJs打开任何PDF,我该怎么做? 这就是后端在其余服务中生成响应的内容。 问题答案: 如果您有这样的事情: 而是这样做:

  • 我已经手动为Google.com打开了一个浏览器窗口,还有另一个浏览器窗口是由selenium webdriver为Google.com打开的。 我如何识别哪一个是硒打开的? 这个问题是在一次采访中问我的。我回答说,selenium打开的窗口不会有插件,还有一个是用Driver。关闭,但面试官说还有其他办法也可以识别。