如渝得水 2025-04-30 11:21 采纳率: 50%
浏览 51

在开发【拼多多工作台】uiautomation 自动化程序时遇到了一个问题,inspect即使以管理员身份运行也获取不了元素,而影刀却能获取并识别元素?

拼多多商家工作台 使用uiautomation时遇到了一个问题,inspect即使以管理员身份运行也获取不了元素,而影刀却能获取并识别元素,这是怎么回事呢?

img

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-04-30 11:24
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你遇到的问题是,使用 Inspect 工具,即使以管理员身份运行,也无法获取到拼多多商家工作台中的元素,而影刀却能获取并识别这些元素。这可能是由于 Inspect 工具和影刀使用的技术不同所致。

    Inspect 工具使用的是 UI Automation(UIA)技术,这种技术可以获取到应用程序中的元素,但是它需要应用程序支持 UIA 接口。如果拼多多商家工作台不支持 UIA 接口,那么 Inspect 工具将无法获取到元素。

    而影刀使用的是 Image Recognition(图像识别)技术,这种技术可以获取到应用程序中的图像,并将其与预先定义的图像进行比较,以确定元素的位置和类型。因此,即使拼多多商家工作台不支持 UIA 接口,影刀也可以通过图像识别来获取和识别元素。

    如果你需要在 C# 中使用自动化来获取拼多多商家工作台中的元素,可以使用 UIAutomation NuGet 包,它提供了对 UIA 接口的支持。以下是一个简单的示例代码:

    using System;
    using System.Windows.Automation;
    
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 UIAutomation 对象
            AutomationElement root = AutomationElement.RootElement;
    
            // 获取拼多多商家工作台的窗口
            Window window = root.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "拼多多商家工作台"));
    
            // 获取窗口中的元素
            AutomationElement element = window.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "元素名称"));
    
            // 获取元素的属性
            string text = element.GetCurrentPropertyValue(AutomationElement.NameProperty).ToString();
    
            Console.WriteLine(text);
        }
    }
    

    请注意,这只是一个简单的示例代码,你可能需要根据实际情况进行修改和调整。

    评论

报告相同问题?

问题事件

  • 修改了问题 4月30日
  • 修改了问题 4月30日
  • 创建了问题 4月30日