gpt4 book ai didi

java - 将 Webdriver 作为实例传递

转载 作者:行者123 更新时间:2023-11-30 11:07:10 25 4
gpt4 key购买 nike

我尝试做的是允许应用程序的一部分允许用户使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com