美文网首页aardio
基于flaui的xpath,实现winui的自动化操作

基于flaui的xpath,实现winui的自动化操作

作者: LCSan | 来源:发表于2023-02-01 16:43 被阅读0次

    aardio自带了MSAA,UIA的相关库,MSAA库还好,UIA的库写起来太麻烦了,又懒得封装。于是找找现成的库直接玩玩,可惜flaui是mit协议。

    import console;
    import dotNet;
    import mouse;
    
    var Core = dotNet.load("FlaUI.Core","D:\Program Files (x86)\flaUI\Libs\FlaUI.Core.dll");
    var UIA2 = dotNet.load("FlaUI.UIA2","D:\Program Files (x86)\flaUI\Libs\FlaUI.UIA2.dll");
    var UIA3 = dotNet.load("FlaUI.UIA3","D:\Program Files (x86)\flaUI\Libs\FlaUI.UIA3.dll");
    var Interop = dotNet.load("Interop.UIAutomationClient","D:\Program Files (x86)\flaUI\Libs\Interop.UIAutomationClient.dll");
    
    Application = Core.import("FlaUI.Core.Application");
    AutomationType = UIA3.new("FlaUI.UIA3.UIA3Automation");
    TimeSpan = dotNet.import("System.TimeSpan","mscorlib.dll")
    
    var app = Application.Attach("WeChat.exe");
    console.log(app)
    var window = app.GetMainWindow(AutomationType,TimeSpan.FromSeconds(2.0));
    if(window){
        console.log(window.Title)
        var ele = window.FindFirstByXPath("/Pane[3]/Pane[2]/Pane[3]/Pane/Pane/Pane/Pane/Pane[2]/Pane[2]/Pane[2]/Pane/Pane[1]/Edit")
        //window.FindAllByXPath("")
        console.log(ele)
        console.log(ele.BoundingRectangle)
        window.SetForeground()
        var rect = ele.BoundingRectangle; 
        x,y = rect.x + rect.Width/2 , rect.y + rect.Height/2
        mouse.click(x,y,true)
    }
    
    
    console.pause()
    

    demo2

    import console;
    import dotNet;
    import mouse;
    
    
    var assembly = dotNet.load("FlaUI",$"/res/FlaUI.dll");
    assembly.import("FlaUI.UIA3");
    
    root = FlaUI.UIA3.UIA3Automation().GetDesktop();
    
    var tm = time.tick(); 
    var ele = root.FindFirstByXPath("/Window[@Name='微信' and @ClassName='WeChatMainWndForPC']//Edit[@Name='输入']")
    console.log(time.tick()-tm);
    console.log(ele)
    console.log(ele.BoundingRectangle)
    ele.SetForeground()
    sleep(3000)
    var rect = ele.BoundingRectangle; 
    x,y = rect.x + rect.Width/2 , rect.y + rect.Height/2
    mouse.click(x,y,true)
    
    console.pause()
    
    

    运行结果

    image.png
    dll直接从工具里面copy过来:
    https://github.com/FlaUI/FlaUInspect/releases/tag/v1.3.0

    相关文章

      网友评论

        本文标题:基于flaui的xpath,实现winui的自动化操作

        本文链接:https://www.haomeiwen.com/subject/vjvihdtx.html