我正在做一个测试单元,要求通过Web浏览器运行测试。我正在使用安装了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时,它打印出google页面。在我的Ubuntu VPS上,我已经安装并运行了我的烧瓶。现在我使用相同的代码作为索引文件(假设所有配置都正常并且'hello world'运行),连接到http://xxx.xxx.xxx.xxx/test时有500内部服务器错误
Apache日志发出以下错误:
... service_args = service_args,log_path = service_log_path文件 “/usr/local/lib/python2.7/ddist-packages/selenium/webdriver/phantomjs/service.py” 第53行,在 init 中 >中的self._log = open(log_path,'w')忽略异常AttributeError:“'服务'对象 在
中没有属性'_log'“
我更改了phatomJS的log_path但仍然遇到了同样的问题。但是,如果我打开python控制台,按行执行如下操作:
from selenium import webdriver
br = webdriver.PhantomJS('./phantomjs')
....
我没有错误。我花了一整天来解决问题,但我无法修复它。任何想法如何解决这个问题?
答案 0 :(得分:2)
找出问题,当前的phantomjs和 init .py没有足够的权限来操纵ghostdriver的service.py。这是修复:
为phantomjs在 init .py中设置自定义配置:
br = webdriver.PhantomJS(service_log_path ='。/ ghostdriver.log',executable_path ='。/ phantomjs')
就是这样,现在你的selenium + flask + phantomjs现在正常工作。