【问题标题】:There are no "CreateDevToolsSession" in ChromeDriver SeleniumChromeDriver Selenium 中没有“CreateDevToolsSession”
【发布时间】:2022-03-30 13:12:56
【问题描述】:

我正在使用 Selenium 并尝试使用 CDP 来模拟地理位置。但是我遇到了一个问题,ChromeDriver 没有像 CreateDevToolsSession 这样的东西。 这是我在 Selenium 文档中找到的代码:

using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.DevTools;
using OpenQA.Selenium.DevTools.V87.Emulation;

namespace dotnet_test {
  class Program {
    public static void Main(string[] args) {
      GeoLocation().GetAwaiter().GetResult();
    }

    public static async Task GeoLocation() {
      ChromeDriver driver = new ChromeDriver();
      DevToolsSession devToolsSession = driver.CreateDevToolsSession();
      var geoLocationOverrideCommandSettings = new SetGeolocationOverrideCommandSettings();

      geoLocationOverrideCommandSettings.Latitude = 51.507351;
      geoLocationOverrideCommandSettings.Longitude = -0.127758;
      geoLocationOverrideCommandSettings.Accuracy = 1;

      await devToolsSession
        .GetVersionSpecificDomains<OpenQA.Selenium.DevTools.V87.DevToolsSessionDomains>()
        .Emulation
        .SetGeolocationOverride(geoLocationOverrideCommandSettings);

        driver.Url = "<your site url>";
        }
    }
}

谢谢。

** 更新 1 ** 这是文档参考的链接。 https://www.selenium.dev/documentation/webdriver/bidirectional/chrome_devtools/

【问题讨论】:

  • 能否更新文档链接以供参考?
  • 请使用此链接更新主要问题以获得更好的可见性。
  • 好的,非常感谢。我是新的:D。但是你知道解决这个问题吗:(
  • 让我看一下文档。

标签: c# selenium


【解决方案1】:

Selenium 4 重大变化

CreateDevToolsSession() 已替换为 GetDevToolsSession()

您在网上找到的许多示例都是使用 Beta 版编写的,例如:https://dotjord.wordpress.com/2020/09/13/how-to-capture-network-activity-with-selenium-4-in-asp-net-core-3-1/,而这段旧代码被复制到 https://stackoverflow.com/a/69478097/495455 周围

测试版(旧代码):

IDevTools devTools = driver as IDevTools;
DevToolsSession session = devTools.CreateDevToolsSession();
session.Network.ResponseReceived += ResponseReceivedHandler;
session.Network.Enable(new EnableCommandSettings());
driver.Navigate().GoToUrl(url);
public void ResponseReceivedHandler(object sender, ResponseReceivedEventArgs e)
{
    System.Diagnostics.Debug.WriteLine($"Status: { e.Response.Status } : {e.Response.StatusText} | File: { e.Response.MimeType } | Url: { e.Response.Url }");
}

Alpha(工作代码):

using DevToolsSessionDomains = OpenQA.Selenium.DevTools.V96.DevToolsSessionDomains;
var driver = new ChromeDriver();
var devTools = (IDevTools)driver;
IDevToolsSession session = devTools.GetDevToolsSession();
var domains = session.GetVersionSpecificDomains<DevToolsSessionDomains>();
domains.Network.ResponseReceived += ResponseReceivedHandler;
await domains.Network.Enable(new OpenQA.Selenium.DevTools.V96.Network.EnableCommandSettings());
driver.Navigate().GoToUrl(url);

void ResponseReceivedHandler(object sender, ResponseReceivedEventArgs e)
{
    System.Diagnostics.Debug.WriteLine($"Status: { e.Response.Status } : {e.Response.StatusText} | File: { e.Response.MimeType } | Url: { e.Response.Url }");
}

【讨论】:

    猜你喜欢
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2019-10-14
    • 2017-02-09
    • 2018-04-11
    • 1970-01-01
    • 2020-05-04
    相关资源
    最近更新 更多