IOError:[Errno 30]只读文件系统:'geckodriver.log'

时间:2018-04-25 07:04:04

标签: python html5 selenium google-app-engine geckodriver

我试图通过单击HTML页面上的按钮来运行python脚本。 Python脚本使用Selenium Firefox驱动程序执行某些任务。当我从命令提示符运行它时,该脚本运行良好,但是当我尝试通过带有应用程序的网页运行它时。它给出以下错误。

  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\python\runtime\stubs.py", line 278, in __init__
    raise IOError(errno.EROFS, 'Read-only file system', filename)
IOError: [Errno 30] Read-only file system: 'geckodriver.log'

我正在使用Google App Engine的webapp2框架和python 2.7

我试图谷歌搜索但找不到任何东西。请问有什么建议,我该如何解决这个bug。

2 个答案:

答案 0 :(得分:1)

正如其他人所说,App Engine应用程序在沙盒环境中运行。其中一个沙箱条件是您不允许修改文件系统。

在正常情况下,您可以通过将/dev/null环境变量设置为BROWSER_LOGFILE来配置Selenium将日志写入/dev/null来解决此问题。我不确定是否会遇到相同的文件系统问题,但它可能值得一试。

答案 1 :(得分:1)

正如其他人所评论的那样,问题在于当前路径中缺少权限。

但是,日志可以存储在 / tmp 文件夹[1]内,也可以使用 / dev / null 进行存储。可以使用以下python行完成:

from selenium import webdriver

your_executable_path = "/tmp/geckodriver"
# Or using webdriver_manager [2]
# from webdriver_manager.firefox import GeckoDriverManager
# your_executable_path = GeckoDriverManager(path="/tmp").install()
driver = webdriver.Firefox(executable_path=your_executable_path, log_path='/tmp/geckodriver.log')
driver.get('http://www.google.com/')

请记住,必须将浏览器安装到系统中。 [3]