Ubuntu上的Chromedriver:selenium.common.exceptions.SessionNotCreatedException:消息:未创建会话 [英] Chromedriver on Ubuntu: selenium.common.exceptions.SessionNotCreatedException: Message: session not created

查看:305
本文介绍了Ubuntu上的Chromedriver:selenium.common.exceptions.SessionNotCreatedException:消息:未创建会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在AWS(EC2实例)的ubuntu环境中使用Selenium + chromedriver遇到麻烦.

Having trouble with selenium + chromedriver in the ubuntu environment in AWS (EC2 instance).

我正在使用chromedriver Linux64版本(wnload chromedriver for Linux: wget https://chromedriver.storage.googleapis.com/78.0.3904.70/chromedriver_linux64.zip).然后,将chromedriver放在/usr/bin中.

I'm using chromedriver Linux64 version (wnload chromedriver for Linux: wget https://chromedriver.storage.googleapis.com/78.0.3904.70/chromedriver_linux64.zip). I've then placed chromedriver in /usr/bin.

使用sudo dpkg -i google-chrome-stable_current_amd64.deb为ubuntu下载了Chrome,如果我使用google-chrome --version验证了chrome的版本,则发现它是:

Chrome was downloaded for ubuntu using sudo dpkg -i google-chrome-stable_current_amd64.deb If I verify the version of chrome using google-chrome --version i see that it's:

Google Chrome 78.0.3904.70 

以下python代码有效,但问题在于它仅偶尔起作用.

The following python code works, but the issue is that it only works sporadically.

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1420,1080')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--remote-debugging-port=9222")
options.add_argument('--disable-gpu')


driver = webdriver.Chrome(chrome_options=options)

#Set base url (SAN FRANCISCO)
base_url = 'https://www.bandsintown.com/en/c/san-francisco-ca?page='

#Build events array 
events = []
eventContainerBucket = []

for i in range(1,2):

    #cycle through pages in range
    driver.get(base_url + str(i))
    pageURL = base_url + str(i)
    print(pageURL)

虽然上面的代码过去一直没有问题,但是如果我运行几次,最终会收到以下错误:

While the code above has worked without issue in the past, if I run it a few times, I end up getting the following error:

    Traceback (most recent call last):
  File "BandsInTown_Scraper_SF.py", line 84, in <module>
    driver = webdriver.Chrome(chrome_options=options)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from disconnected: unable to connect to renderer
  (Session info: headless chrome=78.0.3904.70)

我已阅读到要解决此问题,您可能需要编辑etc/hosts文件.我看过这里,看起来都很不错:

I've read that to solve this issue, you may need to edit the etc/hosts file. I've looked here, and all looks good:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 

我还可以使用请求并通过服务器访问url.例如,以下文字不会给我带来任何问题:

I'm also able to use requests and access urls through the server just fine. For example, the following text gives me no issues whatsoever:

url = 'https://www.bandsintown.com/en/c/san-francisco-ca?page=6'
res = requests.get(url)
html_page = res.content

soup = BeautifulSoup(html_page, 'html.parser')
text = soup.find_all(text=True)
print(text)

我认为可能导致此问题的另一条重要信息是,可能不允许chromedriver在无头模式下运行.例如,如果我在终端中键入chromedriver,则会收到以下消息:

Another important piece of information that I believe could be causing this issue, is that chromedriver may not be allowed to run in headless mode. For example, if I type chromedriver in terminal, I get this message:

Starting ChromeDriver 78.0.3904.70 (edb9c9f3de0247fd912a77b7f6cae7447f6d3ad5-refs/branch-heads/3904@{#800}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

最后,如果我尝试在/usr/bin中执行chmod 777,它会显示operation not permitted.这可能是问题的一部分吗?

Finally, if I try and do chmod 777 in /usr/bin, it says operation not permitted. Could this be part of the issue?

因此,看来chrome + chromedriver是相同的版本,所以这不是问题. Chromedriver和硒似乎被阻止了.我对如何解决这个问题有些困惑.如果有人有建议,我将不胜感激!谢谢.

So, it appears chrome + chromedriver are the same version, so that's not the issue. Chromedriver and selenium appear to be getting blocked. I'm a bit confused as to how to solve this. If anyone has suggestions I would appreciate it! Thank you.

推荐答案

此问题已解决,问题似乎已经解决了.删除此行:options.add_argument("--remote-debugging-port=9222")似乎可以解决此问题.谢谢.

This is solved, the problem seems to have been on my end. Deleting this line:options.add_argument("--remote-debugging-port=9222") seemed to fix this issue. Thanks.

这篇关于Ubuntu上的Chromedriver:selenium.common.exceptions.SessionNotCreatedException:消息:未创建会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆