gpt4 book ai didi

python - 无法在 Ubuntu VPS 上使用 Flask 运行 PhantomJS

转载 作者:行者123 更新时间:2023-11-28 17:38:33 26 4
gpt4 key购买 nike

我正在做一个测试单元,需要通过网络浏览器运行测试。我正在使用安装了 LAMP 堆栈的 Ubuntu VPS 14、mod_wsgi、selenium 2.44 和 PhantomJS 1.9。我首先使用非常简单的代码进行测试:

from flask import Flask, request
from selenium import webdriver

app = Flask(__name__)
app.debug = True

@app.route("/test")
def test():
url = "http://www.google.com"
driver = webdriver.PhantomJS('./phantomjs')
driver.get(url)
result = driver.page_source
driver.close()
return result

if __name__ == "__main__":
app.run()

代码在我本地的 Ubuntu 上运行非常流畅,当我连接到 127.0.0.1:5000/test 时它会打印出谷歌页面。在我的 Ubuntu VPS 上,我的 Flask 已经安装并运行了。现在我使用相同的代码作为索引文件(假设所有配置都正常并且“hello world”运行),连接到 http://xxx.xxx.xxx.xxx/test 时出现 500 Internal Server Error |

Apache 日志发出以下错误:

... service_args=service_args, log_path=service_log_path File "/usr/local/lib/python2.7/ddist-packages/selenium/webdriver/phantomjs/service.py", line 53, in init self._log = open(log_path, 'w') in > ignored Exception AttributeError: "'Service' object has no attribute '_log'" in > ignored

我更改了 phatomJS 的 log_path 但仍然有同样的问题。但是,如果我打开 python 控制台,按如下方式逐行执行:

from selenium import webdriver
br = webdriver.PhantomJS('./phantomjs')
....

我没有错误。我花了一整天的时间才找到问题,但我无法解决它。有什么想法可以解决这个问题吗?

最佳答案

找出问题所在,当前phantomjs和init.py没有足够权限操作ghostdriver的service.py。这是修复:

  1. 添加新用户:“添加用户名”,然后设置“添加用户名sudo”
  2. 登录到新用户,确保你从现在开始运行的每条命令都以“sudo”开头
  3. init.py 所在的 Flask 应用程序中,创建“ghostdriver.log”和“phantomjs”,这是一个可执行文件。
  4. 将它们都修改为 777:init.py、ghostdriver.log 和 phantomjs
  5. init.py 中为 phantomjs 设置自定义配置:

    br = webdriver.PhantomJS(service_log_path='./ghostdriver.log', executable_path='./phantomjs')

就是这样,现在您的 selenium + flask + phantomjs 现在可以正常工作了。

关于python - 无法在 Ubuntu VPS 上使用 Flask 运行 PhantomJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com