如何在Python3程序中正确调用Firefox?
我想通过在 Python 3 中调用命令来启动 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
这样在命令行中就能正常运行。
所以我把这个地址作为参数放进我的 Python 程序中的 os.system 里,但出现了错误:
'C:\Progra~2\Mozill~1' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我尝试在 os.startfile 中使用这个地址,结果得到了错误信息:
在 Tkinter 回调中出现异常
追踪(最近的调用在最前面):
文件 "C:\Python34\lib\tkinter__init__.py",第 1482 行,在 call 中
返回 self.func(*args)
文件 "C:\Python34\hsf\WSC\fm.py",第 59 行,在 Schwab 中
res=os.startfile('C:\Progra~2\Mozill~1\firefox.exe https://schwab.com')
文件未找到错误:[WinError 2] 系统找不到指定的文件:
'C:\Progra~2\Mozill~1\x0cirefox.exe https://schwab.com'
注意到它正确地回显了我的参数,但文件未找到错误中插入了字符串 x0cire 在 '\' 和 'firefox' 之间。
我删除并重新输入了 '\f',结果还是插入了同样的错误字符串。
为了避免路径问题,我把 firefox.exe 复制到了我的文件夹里,但它在其他地方无法运行。
那么,我该如何正确地从 Python 3 程序中调用 Firefox 呢?
2 个回答
我建议你试试selenium,这是一个适用于Python的网页驱动程序接口,它可以和Firefox、Chrome等很多浏览器一起使用。你可以完全控制浏览器,做你想做的事情!
这要看你想用这个网站做什么。如果你只是想打开网页,可以使用webbrowser模块来打开网址。
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()