12

本声明

WebDriver driver = new FirefoxDriver();

总是打开一个新的 Firefox 实例窗口。它不使用已经打开的Firefox。

谁能告诉我如何使用已经打开的Firefox进行测试而不是打开一个新的?

4

6 回答 6

10

像这样使用远程 Web 驱动程序。

System.Uri uri = new System.Uri("http://localhost:7055/hub");
WebDriver = new RemoteWebDriver(uri, DesiredCapabilities.Firefox());

它将使用已经打开的 Firefox 浏览器。您可以在此博客文章中查看此方法的详细信息。

http://www.binaryclips.com/2016/03/selenium-web-driver-in-c-how-to.html

于 2014-09-17T09:17:13.377 回答
2

请注意这一点,因为如果驱动程序崩溃一次,那么所有必须在此之后执行的测试用例都会受到影响,因为它们使用的是相同的驱动程序,而且您将共享 cookie,并且可能之前已经打开了会话,等等

更健壮的解决方案是为每个测试用例创建一个新的 WebDriver,因为这样做可以减少所有测试用例对其他测试用例的依赖。

如果激励您的原因是创建每个 WebDriver 所需的时间,也许您可​​以开始考虑并行运行测试用例,例如使用 TestNG。

谢谢

于 2013-10-31T18:00:24.090 回答
1

最好的方法是扩展 RemoteWebDriver 并覆盖 startSession 方法:

脚步:

  1. 使用命令 java -jar selenium-server-standalone-3.xxjar 启动 selenium 服务器。默认情况下,您的会话从端口 4444 开始。

  2. 打开网址http://localhost:4444/wd/hub/static/resource/hub.html

  3. 单击创建会话按钮开始新的 Firefox 会话并选择 Firefox 浏览器。

  4. 会话开始后,复制会话 ID 并将其粘贴到所需的属性文件或 xml 文件中。

  5. 从您通过以下方法保存的文件中读取会话 ID

    @Override
      protected void startSession(Capabilities desiredCapabilities) {
      String sid = getSessionIDFromPropertyFile();
      if (sid != null) {
        setSessionId(sid);
        try {
          getCurrentUrl();
        } catch (WebDriverException e) {
          // session is not valid
          sid = null;
        }
      }
      if (sid == null) {
        super.startSession(desiredCapabilities);
        saveSessionIdToSomeStorage(getSessionId().toString());
      }
    }
    
于 2017-02-08T06:30:58.827 回答
0

您应该只在进行测试时实例化您的 webdriver 一次,然后将其作为参数传递给构造函数中的其他类。像这样的东西:

public class Test {

WebDriver driver = new FirefoxDriver();
@Test
public void testHomePage() {
    HomePage hp = new HomePage(driver);
    //code here }
}


public class HomePage{
private static WebDriver driver;

public HomePage(WebDriver driver) {
    this.driver = driver;}
}
于 2013-10-31T09:58:17.860 回答
0

在 Java 中,当您说new一个新对象被实例化时。对于 WebDriver,每一个new都是一个新的浏览器窗口。

如果您希望使用相同的浏览器,请使用相同的driver对象。

driver.get("URL PATH");

这将使用已经打开的浏览器转到新的 Url。

于 2013-10-31T22:18:44.477 回答
0

Java 示例。首先,您需要运行 Selenium 服务器。

java -jar C:\selenium-server-standalone-2.53.0.jar

要开始一个新会话(第一个脚本):

WebDriver driver = new RemoteWebDriver(
                        new URL("http://localhost:4444/wd/hub"), 
                        DesiredCapabilities.firefox());

然后,重用(附加)该会话(第二个脚本):

WebDriver driver = new RemoteWebDriver(
                        new URL("http://localhost:7055/hub"), 
                        DesiredCapabilities.firefox());

注意不同的端口号。

于 2016-05-15T09:02:09.730 回答