java - 将 Webdriver 作为实例传递

标签 java selenium webdriver

我尝试做的是允许应用程序的一部分允许用户使用 webdriver 运行一些测试。然后,在不关闭该窗口的情况下,对 Web 应用程序进行更改,然后启动一个单独的方法来执行其他操作。

我创建的是 BrowserAgent 类,它包含一个 Webdriver 对象,如下所示:

 public class BrowserAgent
{
    private static BrowserAgent instance = new BrowserAgent();
    private boolean BrowserAgentBusy = false;
    private static boolean BrowserAgentActive = false;
    private static WebDriver driver;
...

现在,当我获得驱动程序的实例时,我只需调用 BrowserAgent.getDriver(),它的实现方式如下:

public static WebDriver getDriver()
    {    
        if(BrowserAgentActive && driver != null)
        {
            return driver;
        }
        else
        {
            BrowserAgentActive = true;
            return new FirefoxDriver();
        }

    }

但是,出于某种原因,每次我调用 getDriver() 时,都会打开一个新窗口,而第一个窗口的所有上下文现在都丢失了。我做错了什么?

最佳答案

您永远不会将驱动程序设置为任何内容,因此它始终为 null,并且您的代码始终采用 else{} 分支。

这是我可能会做这样的事情的方式:

using System;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;

namespace DriverTesting
{
    [TestFixture]
    public class UnitTest1
    {
        [Test]
        public void TestMethod1()
        {
            IWebDriver myDriver = BrowserAgent.getDriver();
            myDriver.Navigate().GoToUrl("http://www.google.com/");
        }

        [Test]
        public void TestMethod2()
        {
            IWebDriver myDriver = BrowserAgent.getDriver();
            myDriver.Navigate().GoToUrl("http://www.yahoo.com/");
        }
    }
}

public class BrowserAgent
{
    private static IWebDriver driver;

    public static IWebDriver getDriver()
    {
        if (driver == null) {
            driver = new InternetExplorerDriver();
        }
        return driver;
    }
}

关于java - 将 Webdriver 作为实例传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29019543/

相关文章:

java - 什么是 RecyclerView.Adapter<MyAdapter.MyViewHolder> 以及它与 Android 中的 RecyclerView.Adapter 有何不同?

java - PreparedStatement 的 setInt() 不适用于 PostgreSQL

c# - 在 try-catch 中包装 specflow 场景

python-2.7 - 无法在 Python 中使用适用于 Chrome 的 selenium 网络驱动程序打开两个具有不同配置文件的 Google Chrome 实例

c# - 升级到 3.9 版后无法启动 Selenium IE 驱动程序

java - Selenium:登录后页面刷新

java - 仅针对某些 jar 将 System.out/System.err 重定向到 log4j

java - 当我输入正确和错误的密码时什么都没有发生

python - Selenium,加载 HTML,无需媒体

c# - 如何输出使用 NUnit 3 运行的测试结果?