在EC2上运行Selenium可以在服务器上运行,但不能通过浏览器运行

时间:2020-05-05 15:01:12

标签: python amazon-web-services selenium amazon-ec2 selenium-chromedriver

TLDR;

在浏览器中调用脚本时,在EC2实例上安装的使用ChromeDriver的Python Selenium无法正常工作,而从服务器调用相同的脚本时,正常工作。如何解决?


嗨,

我已经在我的AWS EC2实例上安装了Python 3.6,Selenium,ChromeDriver和Google Chrome。我还启用了HTTP / 2并赋予了ChromeDriver权限。

我有一个测试Python脚本,我们称它为test.py。

#!/usr/bin/env python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome('/usr/bin/chromedriver', options=options)
driver.get("https://www.youtube.com/")
element_text = driver.find_element_by_id("title").text
print(element_text)

在终端中,我可以简单地使用以下命令运行该脚本:

python3 /var/app/current/scripts/test.py

并且没有问题。

但是,如果尝试从浏览器运行相同的脚本(请注意URL为HTTPS),则会出现以下错误:

[mpm_event:notice] AH00493: SIGUSR1 received.  Doing graceful restart
[http2:warn] AH02951: mod_ssl does not seem to be enabled
[lbmethod_heartbeat:notice] AH02282: No slotmem from mod_heartmonitor
[mpm_event:notice] AH00489: Apache/2.4.41 (Amazon) configured -- resuming normal operations
[core:notice] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[mpm_event:warn] AH00488: long lost child came home!
Traceback (most recent call last):
  File "/var/app/current/scripts/test.py", line 3, in <module>
    from selenium import webdriver
ModuleNotFoundError: No module named 'selenium'

声明没有名为“ selenium”的模块。

请注意,我是使用PHP从浏览器中调用它的:

$output=shell_exec('python3 /var/app/current/scripts/test.py');
echo "<pre>$output</pre>";

我也知道PHP可以正常工作,因为如果我将test.py更改为简单:

import datetime from datetime
print(datetime.now())

它将打印日期和时间。

因此,Selenium似乎有问题,但仅在浏览器中存在。

有人知道这可能是什么吗?

感谢您的所有帮助/评论!

非常感谢:)

布拉德


编辑

此后,我将脚本更改为:

sudo PYTHONUSERBASE=/home/ec2-user/.local python3 /var/app/current/scripts/test.py

,现在出现了稍微不同的错误:

sudo: no tty present and no askpass program specified

我认为我必须创建一个虚拟环境,然后在再次调用脚本时使用它。

0 个答案:

没有答案