c# - 如何使用 Selenium 或其他工具操作 Chrome 扩展的小部件?

标签 c# google-chrome google-chrome-extension selenium-webdriver

我一直在寻找一种方法来点击扩展的小部件 outside the HTML DOM在 C# 中使用 Selenium(比如打开它等等...),但没有成功。我尝试了 addExtension 方法,但它使 Chrome 崩溃并尝试使用默认配置文件,因此事件扩展将与 ChromeDriver 实例一起加载,但这对我也不起作用。

这些元素没有我可以导航到的页面以更改它们的设置(它们在单击小部件时有一个弹出窗口),所以我需要另一种方法来执行此操作。

你们中的任何一位 Selenium 专家都知道我是否可以用 Selenium 实现它,或者它可能是将来要实现的功能?

或者也许有另一个不错的免费工具可以做到这一点?

最佳答案

我找到了 this图像搜索 dll 库与 AutoIt 中的包装器为我解决了它。它不是您能找到的最强大的解决方案,但对于大多数人来说它工作得很好。它适用于 Chrome 的不可识别控件。

使用非常简单:

$result = _ImageSearchArea("ButtonImagePath.png", $tolerance, $Left, $Top, $Right, $Bottom, $x, $y, 100)

其中 $x 和 $y 是结果位置,因此您可以在之后发送点击。使用截图工具获取图像也非常容易。更多信息 herehere .

编辑:如果您想在 C# 中使用它,也可以使用它的 dll 进行互操作: (这对于在不明按钮上自动点击鼠标等非常有用)

class ImageHelper
{
    [DllImport("ImageSearchDLL.dll")]
    private static extern IntPtr ImageSearch(int x, int y, int right, int bottom, [MarshalAs(UnmanagedType.LPStr)]string imagePath);

    private static String[] UseImageSearch()
    {
        int right = Screen.PrimaryScreen.WorkingArea.Right;
        int bottom = Screen.PrimaryScreen.WorkingArea.Bottom;

        IntPtr result = ImageSearch(0, 0, right, bottom, "imageFileName.png");
        String res = Marshal.PtrToStringAnsi(result);


        if (res[0] == '0') return null;//not found

        String[] data = res.Split('|');
        int x; 
        int y; 
        int.TryParse(data[1], out x);
        int.TryParse(data[2], out y);

        //0->found, 1->x, 2->y, 3->image width, 4->image height
        Cursor.Position = new Point(x, y);

        return data;
    }
}

关于c# - 如何使用 Selenium 或其他工具操作 Chrome 扩展的小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236141/

相关文章:

c# - 使用 Blazor <InputSelect> 会发出警告 : Element 'option' cannot be nested inside element 'p'

javascript - 有没有办法列出网页的所有可用 css 类?

javascript - 在网站的 javascript 完成页面构建后,如何运行 Chrome 扩展内容脚本?

javascript - HTML 表单提交按钮未运行与其关联的 OnSubmit 脚本

javascript - 单击 chrome 扩展程序图标时在新窗口中打开当前页面 URL

c# - 为什么这段代码会给我来自 Request.Form 的无效内容类型? (ASP.NET 核心)

c# - 需要协助 : write a small program that will turn on the computer and executes a specified program.

javascript - chrome.tabs.Tab 未在 popup.js 脚本中定义

html - Chrome 没有清除缓存

c# - 表示层次枚举