geckodriver не открывает firefox на ubuntu с использованием селена с django - PullRequest
0 голосов
/ 11 июля 2020

Я целый день занимался этой проблемой. мой код селена работает на windows отлично с chromedriver и geckodriver, мне нужен сельдерей, и лучшим вариантом было переключиться на мою ОС Ubuntu (версия 20.) На странице, на которой должны отображаться очищенные данные, отображается сообщение: соединение отказано. geckodriver - версия 26. Это ошибка.

File "/home/maro/Desktop/crypto/cert/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/maro/Desktop/crypto/cert/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/maro/Desktop/crypto/cert/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/maro/Desktop/crypto/forex/views.py", line 80, in pricelist
    driver = webdriver.Firefox(executable_path='/usr/bin/geckodriver')
  File "/home/maro/Desktop/crypto/cert/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__
    RemoteWebDriver.__init__(
  File "/home/maro/Desktop/crypto/cert/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/maro/Desktop/crypto/cert/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/maro/Desktop/crypto/cert/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/maro/Desktop/crypto/cert/lib/python3.b/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: connection refused

Я обновил свой firefox с версии 75 до 80 и все еще без изменений. Я несколько раз менял путь к драйверу, но ошибка остается прежней.

это мой журнал geckodriver

1594416320001   mozrunner::runner   INFO    Running command: "/usr/bin/firefox" "-marionette" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofileS5CJqR"

geckodriver исполняемый файл, я также проверил хосты, чтобы увидеть если localhost был привязан к 127.0 .... url и да, это было. я полностью запутался

вот мой view.py

import time
import selenium
from django.shortcuts import render
from django.contrib.auth import login, authenticate, logout
from .forms import SignUpForm
from django.shortcuts import render, redirect

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
def pricelist(request):
    driver = webdriver.Firefox(executable_path='/usr/bin/geckodriver')
    driver.get('')
    data = []
    while not data:

        
        for elm in driver.find_elements(By.CSS_SELECTOR, "span[data-field=CPT]"):
            if elm.text and elm.text != '-':
                data.append(elm.text)
                
            
        time.sleep(3)
           
    context = {
        "price": 123,
        "mydata": data
    }

    return render(request, 'pricelist.html', context)

1 Ответ

1 голос
/ 14 июля 2020

Я заставил его работать. Я перешел на chromedriver, столкнулся с аналогичной проблемой и обнаружил, что chromedriver использует тот же порт, что и мое приложение Django. Я изменил порт для своего приложения Django на 8001 с python manage.py runserver 8001

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...