繁体   English   中英

Selenium webdriver - 如何连接到由 Visual Studio 使用 C# 打开的同一个 firefox 实例

[英]Selenium webdriver - How to connect to the same firefox instance open by Visual Studio using C#

大家好。 我想要一些帮助。

我一直在尝试使用第一次由 Visual Studio 打开的 Firefox window 的相同实例。

问题是,如何获取相同的 window 浏览器并继续测试而不关闭浏览器并在每次我想进行测试时再次打开?

我知道关于这个主题有很多问题,但我发现一些问题适用于旧版本的 selenium 并且一些代码由于被弃用而无法工作。

我能做些什么成功:

我可以用传统方法正常工作来测试一个单元,在开始时打开 Firefox 并在测试结束后关闭:

[ClassInitialize]
public static void InitializeClass(TestContext testContext) {

    driver = new FirefoxDriver();
}

然后我评论了以下几行,以在测试完成时保持 window 打开:

//driver.Quit();
//driver.Close();
//driver.Dispose();

我无法做到:

通过我进行的搜索,我了解到我们可以连接到之前已经打开的现有 session。 所以我尝试了以下方法:

[ClassInitialize]
public static void InitializeClass(TestContext testContext) {


    FirefoxOptions options = new FirefoxOptions();
    driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), options);

    //driver = new FirefoxDriver();

在上面的例子中,我注释了driver = new FirefoxDriver(); 并使用FirefoxOptions方法而不是已弃用的DesiredCapabilities.firefox()方法,当我尝试连接到打开的 firefox window 时,我得到了一个错误,我不能在 Z34D1F91FB2E514B896BA8 上打开。 在日志中,有一行说:

Was'n possible to copy the file "..\packages\Selenium.Firefox.WebDriver.0.27.0\build\driver\geckodriver.exe" to "..\bin\debug\geckodriver.exe"

The file geckodriver.exe (61484) is being used by another process

有了这个,我尝试了另一种不同的方法来达到我的期望:

[ClassInitialize]
public static void InitializeClass(TestContext testContext) {
    
    
     FirefoxOptions options = new FirefoxOptions();
     driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), options);
    
               
     options.AddArgument("--marionette-port " + "2828" + "--connect-existing");
     FirefoxDriverService ffDriverService = FirefoxDriverService.CreateDefaultService();           
     ffDriverService.BrowserCommunicationPort = 4444;
}

最后,我尝试打开 Firefox 的单独实例以尝试连接到如下所示:

firefox.exe --marionette -start-debugger-server 2828 -profile %temp%\FirefoxTEMP

我成功打开了一个木偶实例,但我仍然无法将测试附加到这个打开的 window。

感谢您的关注,并原谅我制作的一些新手技巧。

我读过的问题:

如何将 Selenium 连接到现有的 Firefox 浏览器? (Python)

如何将 Selenium Webdriver 连接到现有的 Firefox/Chrome 浏览器 session?

如何连接到已经打开的浏览器?

  1. 您可以使用“分离”并将 Firefox 更改为 Chrome(因为我在 Firefox 中没有看到该选项)。 链接到链接 很快,它会根据“true”/“false”选项让您的浏览器保持打开状态。

ChromeOptions 选项 = 新 ChromeOptions();

options.setExperimentalOption("分离", true);

  1. 您可以使用坏习惯并简单地使用全局变量。 全局浏览器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM