2301_81718003 2023-12-07 11:23 采纳率: 0%
浏览 12

selenium如何接管其它桌面app弹出的浏览器

selenium如何接管其它桌面app弹出的浏览器

一个不知道啥东西的公司桌面exe的程序,有界面的,在界面上可以点一个按钮打开浏览器,就是弹出来浏览器。现在我想用selenium接管这个弹出的浏览器。但是由于selenium接管的都是开启了远程调试端口的浏览器,这个弹出来的,并没有开启调试端口,就算开启了也不知道啥端口。
现在已知的解决办法就是在浏览器启动之前给它加上远程参数
--remote-debugging-port=9526 --user-data-dir="D:\xxxx"
然后再用selenuim接管

网上说的是给桌面的浏览器快捷启动图标右键编辑属性,在exe路径后加上 -- remote参数,将chrome的路径添加到环境变量path里,打开cmd,执行命令:

chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\selenium_chrome"

执行后会打开一个浏览器页面。
-remote-debugging-port:指定任何打开的端口。
-user-data-dir:指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。

但是那个只是针对你手工启动浏览器起作用,你要去点按个浏览器快捷图标。现在是别的程序启动了浏览器(可能是通过cmd命令start +url方式),它没有加remote,就算加了我也不知道什么端口。
不要考虑,把弹出来的浏览器的地址拷贝出来,这个无效,这个弹出浏览器器的应用程序,是比较重要的,他会监听你的操作,你要是把url拷贝到你手动打开的浏览器是不起作用的,业务系统无法办公

  • 写回答

2条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-12-08 23:53
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
    (通义千问专栏,V2.1.0版本,2023.12.01)


    该回答引用通义千问大模型,仅提供参考,不保证完全正确
    如果你想要用 Selenium 接管由其他桌面应用程序启动的浏览器,你需要确保这个浏览器被以支持远程调试的方式启动。由于你提到的桌面程序是在执行时打开一个浏览器,并且没有提供远程调试端口,我们需要找到一种方法来注入这些参数。


    以下是一种可能的方法:

    1. 使用 AutoHotkey 脚本
      AutoHotkey 是一个免费的 Windows 自动化工具,可以用来捕获特定的应用程序窗口并模拟键盘和鼠标操作。你可以使用它来监视你的桌面应用程序的运行,并在它启动 Chrome 浏览器时自动添加远程调试参数。

    2. 创建 AutoHotkey 脚本
      下面是一个简单的示例脚本,用于监控目标应用程序并当它启动浏览器时添加远程调试参数:

    #NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
    SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
    SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
    
    ; 修改以下行以匹配你的应用程序名称(例如,"MyApp.exe")。
    TargetApp := "your_desktop_app.exe"
    
    DetectHiddenWindows, On
    WinWaitActive, ahk_exe %TargetApp%
    {
        WinGetTitle, TargetTitle, A
    
        ; 当应用程序启动时,按下组合键 Ctrl + Shift + Q 来关闭当前未开启远程调试的浏览器窗口。
        Send ^+q
    
        ; 模拟点击“新建标签页”按钮。
        Send {Ctrl Down}n{Ctrl Up}
    
        ; 等待新标签页加载完成。
        Sleep, 3000
    
        ; 在地址栏中输入带有远程调试参数的URL。
        Send chrome://inspect?remote-debugging-port=9222 --user-data-dir="D:\selenium_chrome"{Enter}
    }
    

    保存上面的脚本为 inject_remote_debug_params.ahk,然后双击运行该脚本。

    1. 启动目标应用程序
      运行你的目标应用程序,AutoHotkey 脚本会监听它的活动。当它启动浏览器时,脚本会自动注入远程调试参数并打开一个新的标签页。

    2. 使用 Selenium 连接浏览器
      一旦新的浏览器窗口打开,你可以使用 Selenium 的默认构造函数连接到这个浏览器实例。这将使你能够控制这个浏览器窗口。

    请注意,这个解决方案可能需要根据你的具体情况进行调整。例如,如果目标应用程序使用的是不同的方式来启动浏览器,或者它本身阻止了外部应用程序对它的操作进行修改,那么这种方法可能无法正常工作。在这种情况下,你可能需要寻找其他的自动化工具或方法来实现相同的目标。

    评论

报告相同问题?

问题事件

  • 修改了问题 12月7日
  • 创建了问题 12月7日