【问题标题】:What is the proper way I can invoke firefox from a python3 program?我可以从 python3 程序调用 firefox 的正确方法是什么?
【发布时间】:2014-10-31 00:05:57
【问题描述】:

我正在尝试通过在 python 3 中将其作为 os.system 或 os.startfile 的参数调用来使用 Internet 页面启动 Firefox。

我要开始的网页是https://schwab.com

我无法在命令行中使用

C:\Python34\hsf\WSC>C:\Program Files(x86)\Mozilla Firefox\firefox.exe https://schwab.com

它在空间上窒息。

但我可以通过使用

C:\Progra~2\Mozill~1\firefox.exe https://schwab.com

在命令行中可以正常工作

所以我将该地址作为 os.system 的参数放在我的 python 程序中,并得到错误:

'C:\Progra~2\Mozill~1' 不是内部或外部命令、可运行程序或批处理文件。

我在 os.startfile 中试了一下,得到了错误信息:

Tkinter 回调异常 回溯(最近一次通话最后): 调用中的文件“C:\Python34\lib\tkinter__init__.py”,第 1482 行 返回 self.func(*args)

文件“C:\Python34\hsf\WSC\fm.py”,第 59 行,在 Schwab 中

res=os.startfile('C:\Progra~2\Mozill~1\firefox.exe https://schwab.com')

FileNotFoundError: [WinError 2] 系统找不到指定的文件:

'C:\Progra~2\Mozill~1\x0cirefox.exe https://schwab.com'

请注意,它正确地呼应了我的论点,但 FileNotFoundError 在 '\' 和 'firefox' 之间插入了字符串 x0cire

我删除并重新键入了“\f”,并插入了相同的错误字符串。

为了避开该路径,我将 firefox.exe 复制到我的文件夹中,但它不会在其原生环境之外运行。

从 python3 程序调用 firefox 的正确方法是什么?

【问题讨论】:

    标签: python firefox operating-system


    【解决方案1】:

    这取决于你想用这个网站做什么。如果您只想打开页面,请使用webbrowser module 打开网址。

    import webbrowser
    
    webbrowser.open('https://www.schwab.com/')
    

    如果您需要更复杂的东西,您可以使用Selenium 模块以几乎任何您需要的方式与页面进行交互。

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Firefox()
    driver.get("http://www.python.org")
    assert "Python" in driver.title
    elem = driver.find_element_by_name("q")
    elem.send_keys("selenium")
    elem.send_keys(Keys.RETURN)
    driver.close()
    

    【讨论】:

    • 哇!这太容易了,就像作弊一样。 :-)
    【解决方案2】:

    我建议您尝试selenium 一个用于 Python 的 Web 驱动程序 API,它适用于 Firefox、Chrome 等。除了你需要的之外,你还可以完全控制浏览器!

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2019-09-08
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多