Selenium远程Webdriver不与AWS EC2一起使用

时间:2017-11-01 17:43:24

标签: selenium ubuntu selenium-webdriver amazon-ec2 selenium-chromedriver

我正在尝试进行一些网站测试,这需要保持旧的webdriver处于打开状态,然后使用webdriver.remote使用旧驱动程序的执行程序URL和会话ID重新附加回来。相同的代码在我的MacBook上运行正常,但在AWS EC2 Ubuntu 16.04上运行时出错。错误追溯和代码附在下面。请帮忙。

操作系统:Ubuntu 16.04

Selenium版本:3.4.0

浏览器:Google-Chrome

enter image description here enter image description here

New Code following @Tarun Lalwani's Idea

1 个答案:

答案 0 :(得分:2)

经过这么长时间的挖掘,我终于找到了解决方案。原来没有GUI的Ubuntu很难对付。所以当你尝试启动Selenium Webdriver时。您需要添加一些选项,不仅包括常规webdriver.Chrome,还包括webdriver.Remote。

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import 
DesiredCapabilities

options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('headless')
options.add_argument('--no-sandbox')

driver = webdriver.Chrome(chrome_options=options)
executor_url = driver.command_executor._url
session_id = driver.session_id
driver.get("http://www.google.com")

print(session_id)
print(executor_url)

print(driver.current_url)

driver2 = webdriver.Remote(command_executor=executor_url, desired_capabilities=options.to_capabilities())
driver2.close()
driver2.session_id = session_id
print(driver2.current_url)
driver2.get("http://www.facebook.com")
print(driver2.current_url)

另外,使用webdriver.remote也会打开一个僵尸webdriver。如果您只关心重新附加回现有的webdriver。您可以在新驱动程序附加到旧驱动程序之前关闭新驱动程序。