c# - 从 Selenium webdriver 的当前窗口 GUID 获取窗口句柄 (IntPtr)

标签 c# .net winapi selenium guid

我正在 try catch 整个浏览器屏幕(例如任何工具栏、面板等)的屏幕截图,而不仅仅是整个页面,所以我得到了这段代码:

using (FirefoxDriver driver = new FirefoxDriver())
{ 
    driver.Navigate().GoToUrl(url);                

    ScreenCapture sc = new ScreenCapture();

    // How can I find natural IntPtr handle of window here, using GUID-like identifier returning by driver.currentWindowHandle?
    Image img = sc.CaptureWindow(...);
    MemoryStream ms = new MemoryStream();
    img.Save(ms, ImageFormat.Jpeg);
    return new FileStreamResult(ms, "image/jpeg");
}

最佳答案

您可以使用 Process.GetProcesses 获取窗口句柄:

using (FirefoxDriver driver = new FirefoxDriver())
{
    driver.Navigate().GoToUrl(url);

    string title = String.Format("{0} - Mozilla Firefox", driver.Title);
    var process = Process.GetProcesses()
        .FirstOrDefault(x => x.MainWindowTitle == title);

    if (process != null)
    {
        var screenCapture = new ScreenCapture();
        var image = screenCapture.CaptureWindow(process.MainWindowHandle);
        // ...
    }
}

这当然假设您有一个具有该特定标题的浏览器实例。

关于c# - 从 Selenium webdriver 的当前窗口 GUID 获取窗口句柄 (IntPtr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526260/

相关文章:

c# - 刷新DataGridView?

Java DLL 函数 : Connecting to MicroFocus Rumba ehlapi32

windows - 在 Windows 上,如何防止注册表项被修改?

c# - 具有固定平均值的随机数

c# - 在 wse 中使用自己的异常,而不仅仅是 SoapException

c++ - C++ 中的滴答计数和毫秒

c# - 在 DataTable 中查找一行

c# - 将 DateTime 转换为 long,反之亦然

c# - 哪些后编译器(或其他)选项可用于在结构之间重用功能?

C# Entity Framework 未初始化数据库