selenium.common.exceptions.SessionNotCreatedException:消息:未创建会话

时间:2019-07-18 18:17:00

标签: python-3.x selenium selenium-webdriver heroku selenium-chromedriver

将应用程序部署到Heroku时遇到一些问题,但是该应用程序在我的机器上可以正常工作。驱动程序进入页面并关闭,但是在尝试重新打开时崩溃了,并显示以下消息:

2019-07-18T02:45:46.825924+00:00 heroku[worker.1]: Starting process with command `python script.py`
2019-07-18T02:45:47.454789+00:00 heroku[worker.1]: State changed from starting to up
2019-07-18T02:46:00.826330+00:00 app[worker.1]: https://www.google.com/ Viewed!
2019-07-18T02:46:02.300095+00:00 app[worker.1]: Traceback (most recent call last):
2019-07-18T02:46:02.300192+00:00 app[worker.1]:   File "script.py", line 37, in <module>
2019-07-18T02:46:02.300596+00:00 app[worker.1]:     execution()
2019-07-18T02:46:02.300704+00:00 app[worker.1]:   File "script.py", line 25, in botting
2019-07-18T02:46:02.300950+00:00 app[worker.1]:     driver = webdriver.Chrome(executable_path='/app/.chromedriver/bin/chromedriver', chrome_options=options) #/app/chrome_file/chromedriver
2019-07-18T02:46:02.301008+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
2019-07-18T02:46:02.301309+00:00 app[worker.1]:     desired_capabilities=desired_capabilities)
2019-07-18T02:46:02.301367+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
2019-07-18T02:46:02.301692+00:00 app[worker.1]:     self.start_session(capabilities, browser_profile)
2019-07-18T02:46:02.301776+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
2019-07-18T02:46:02.302193+00:00 app[worker.1]:     response = self.execute(Command.NEW_SESSION, parameters)
2019-07-18T02:46:02.302235+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
2019-07-18T02:46:02.302727+00:00 app[worker.1]:     self.error_handler.check_response(response)
2019-07-18T02:46:02.302769+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
2019-07-18T02:46:02.303239+00:00 app[worker.1]:     raise exception_class(message, screen, stacktrace)
2019-07-18T02:46:02.303329+00:00 app[worker.1]: selenium.common.exceptions.SessionNotCreatedException: Message: session not created
2019-07-18T02:46:02.303332+00:00 app[worker.1]: from tab crashed
2019-07-18T02:46:02.303335+00:00 app[worker.1]:   (Session info: headless chrome=75.0.3770.142)
2019-07-18T02:46:02.303395+00:00 app[worker.1]: 

这是有问题的脚本:

from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException, ElementNotVisibleException, WebDriverException
from selenium import webdriver
from time import sleep
import json

with open("proxies.txt", 'r') as filein:
    proxylist = filein.read()

with open("links.json", 'r') as linksin:
    linklist = json.load(linksin)

def execution():
    for proxies in proxylist:
        options = webdriver.ChromeOptions()
        options.binary_location = '/app/.apt/usr/bin/google-chrome'
        options.add_argument("--example-flag")
        options.add_argument('--no-sandbox')
        options.add_argument('--disable-gpu')
        options.add_argument('--headless')
        #options.add_argument('--disable-dev-shm-usage')
        options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36")
        options.add_argument('--proxy-server=%s' % proxies)
        driver = webdriver.Chrome(executable_path='/app/.chromedriver/bin/chromedriver', chrome_options=options) #/app/chrome_file/chromedriver
        for links in linklist:
            try:
                driver.get(links)
                sleep(10)
                print('{} Viewed!'.format(links))
                driver.close()
            except(WebDriverException, ConnectionError, ConnectionAbortedError, ConnectionRefusedError, ConnectionResetError):
                pass

if __name__ == "__main__":
    execution()

但是问题是,我尝试了发现的几乎所有“解决方案”,结果始终是相同的,任何帮助都将受到赞赏。

尝试了this answer中的一些东西,但没有成功,这是我尝试过的没用的东西:

chrome_options.add_argument('--no-sandbox')已经在脚本中,并且导致相同的错误。

chrome_options.add_argument('--disable-dev-shm-usage')已经在脚本中,但是它冻结了Heroku,并且仍然冻结为app [worker.1]:https://www.google.com/已查看!而且不要去任何地方(等待它响应30m)

关于:

 sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm, 

我无法在Heroku env中弄混这些东西,所以这是不可以的。而且从崩溃的标签页开始,Chrome也进行了更新(75.0.3770.142),chromedriver也进行了更新(75.0.3770.140)。关于其他修复程序,我尝试了options.add_argument("--example-flag"),并得到了相同的结果。

0 个答案:

没有答案