docker 没有检测到窗口句柄来搜索和选择文件

问题描述

我正在使用 python 进行 selenium 项目。文件上传一个功能,当我们点击选择文件按钮时,会出现一个窗口句柄,我们可以在其中选择要上传文件。由于 selenium 无法识别 Windows UI 元素以使用窗口句柄,因此我创建了一个使用 pyAutoit 库来搜索和选择文件方法。在本地机器上工作时,脚本工作正常。但是,当我尝试在 Docker 上以无头模式运行相同的脚本时,似乎没有出现窗口句柄并且在 docker 上运行时。它一直在等待窗口句柄。

def handle_browse_dialog(self,doc_address):
   autoit.win_wait_active("Open") #the program gets stuck on this line
   time.sleep(2)
   autoit.control_send("Open","[CLASS:Edit; INSTANCE:1]",doc_address)
   time.sleep(2)
   autoit.control_click("Open","[CLASS:Button; INSTANCE:1]")
   autoit.win_close("Open")

除了 pyautoit 库之外,我还尝试了其他库,如 (pyautogui、win32com) 来处理 Windows 句柄,但面临上述相同的问题。

docker_compose.yml

version: "3"
services:
  selenium-hub:
    image: selenium/hub:latest
    #container_name: selenium-hub
    ports:
      - "4444:4444"
  chrome1:
    image: selenium/node-chrome:latest
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

  chrome2:
    image: selenium/node-chrome:latest
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

  firefox:
    image: selenium/node-firefox:latest
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)