【问题标题】:OSError: [WinError 193] %1 is not a valid Win32 application error using GeckoDriver and Firefox through Selenium and Python on WindowsOSError: [WinError 193] %1 is not an valid Win32 application error using GeckoDriver and Firefox through Selenium and Python on Windows
【发布时间】:2020-06-30 14:17:51
【问题描述】:

我在 Ubuntu 中使用 selenium 创建了脚本并且在那里工作得很好,但是当我将它移到 windows10 时,我得到了很多错误,我试图一个一个地修复它,直到我看到这个错误。我一直在寻找解决此问题的方法,但无法解决此错误。

Traceback (most recent call last):
  File "D:/Users/b/Documents/Python/Bolt/GUI.py", line 180, in start
    driver = l.start_chime()  # start chime
  File "D:\Users\b\Documents\Python\Bolt\Login.py", line 87, in start_chime
    self.chime_driver = webdriver.Firefox(executable_path=self.PATH)
  File "D:\Users\b\Documents\Python\Python3.8\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 164, in __init__
    self.service.start()
  File "D:\Users\b\Documents\Python\Python3.8\lib\site-packages\selenium\webdriver\common\service.py", line 72, in start
    self.process = subprocess.Popen(cmd, env=self.env,
  File "D:\Users\b\Documents\Python\Python3.8\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "D:\Users\b\Documents\Python\Python3.8\lib\subprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
  File "C:\Program Files\JetBrains\PyCharm 2020.1.2\plugins\python\helpers\pydev\_pydev_bundle\pydev_monkey.py", line 551, in new_CreateProcess
    return getattr(_subprocess, original_name)(app_name, patch_arg_str_win(cmd_line), *args)
OSError: [WinError 193] %1 is not a valid Win32 application

当我尝试使用 selenium 打开 webdriver 时会发生这种情况。

self.myday_driver = webdriver.Firefox(executable_path=self.PATH)

是否有任何方法可以将脚本从 Ubunto 移动到 Windows 而不会出错?

【问题讨论】:

    标签: python windows selenium firefox geckodriver


    【解决方案1】:

    我会尽力帮你回答你最后一个问题:

    是否有任何方法可以将脚本从 Ubunto 移动到 Windows 出错了?

    是的,你听说过 docker 吗? https://www.docker.com/ 本质上,docker 会创建隔离环境,在每台安装了 docker 的机器上运行。这些环境可以在 dockerfile 中进行配置,基本上,您需要按照以下步骤操作:

    • 在两台机器上安装 docker。我已经在 Windows 和 RH 上使用过自动执行所有这些过程并最大限度地减少错误。
    • 创建一个docker file,结构类似于:
    FROM ubuntu:18.04
    COPY . /app
    RUN make /app
    CMD python /app/app.py
    
    • 所以它会创建一个基于 ubuntu image 的环境
    • 将当前目录 (.) 中的所有文件复制到 /app(请记住,这将是一个 ubuntu 映像,因此您具有 /etc /home 等标准文件夹结构)
    • 运行命令 make(在你的情况下可以使用 pip 安装一些依赖项)
    • 运行 python 命令。

    您还可以找到可供使用的 python 映像,因此您可以获取一个安装了 python 的映像 linux,而不是 ubuntu:latest,然后您只需安装您的依赖项。

    对于开发人员来说,这是一个很棒的工具,我建议您研究一下,阅读文档以理解概念,它会让您的生活变得轻松。

    希望对你有帮助。

    【讨论】:

    • 感谢您的回答和建议,我一定会看看的。
    【解决方案2】:

    此错误消息...

    OSError: [WinError 193] %1 is not a valid Win32 application
    

    ...暗示底层操作系统无法识别%1,即系统变量PATH是一个有效的Win32应用程序,即一个可执行二进制文件


    要启动Selenium 驱动的GeckoDriver 控制的Firefox 会话,您需要:

    • 下载最新版本的GeckoDriver二进制版本,放到你的系统中。

    • 接下来在您的代码块中,您需要通过 Key executable_path 提及 binary 的绝对路径,如下所示:

      from selenium import webdriver
      
      self.myday_driver = webdriver.Firefox(executable_path=r'C:\path\to\geckodriver.exe')
      

    【讨论】:

    • 感谢@DebanjanB 指出我的错误。它有效。
    猜你喜欢
    • 2019-02-24
    • 2022-06-17
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多