Селен с pyvirtualdisplay не может найти элемент

У меня есть рабочий скрипт, который регистрируется на сайте с использованием селена, как это:

script.py

from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(1024, 768)) display.start() browser = webdriver.Firefox() actions = webdriver.ActionChains(browser) browser.get('some_url_I_need') content = browser.find_element_by_id('content') # Error on this line 

запуск этого скрипта на амазонке ubuntu через ssh где я установил firefox следующим образом: sudo apt-get install firefox

Ошибка, которую я получаю:

selenium.common.exceptions.NoSuchElementException: Сообщение: u'Unable для поиска элемента: {"method": "id", "selector": "content"} '

Если я запускаю один и тот же скрипт на другом ubuntu ящике через ssh тоже, он работает нормально, без ошибок, но я не знаю, как был установлен firefox на этом поле, что может быть причиной этой ошибки. Связана ли установка firefox и как правильно установить ее для использования с pyvirtualdisplay и селеном?

    Если на веб-сайте есть какой-то динамический контент, вам нужно подождать некоторое время, пока вы не сможете получить желаемый элемент. Попробуйте следующие примеры кода:

    Проверить конфигурацию

    • Вы установили бэкэнд для pyvirtualdisplay как xvfb и xephyr ? Если не,

      try: sudo apt-get install xvfb xserver-xephyr

    Первая попытка: добавьте простой time.sleep()

     import time from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(1024, 768)) display.start() browser = webdriver.Firefox() actions = webdriver.ActionChains(browser) browser.get('some_url_I_need') time.sleep(5) # sleep for 5 seconds content = browser.find_element_by_id('content') # Error on this line 

    Вторая попытка: Добавьте browser.implicitly_wait(30) в ваш веб-редактор Selenium.

     from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(1024, 768)) display.start() browser = webdriver.Firefox() browser.implicitly_wait(30) # seconds actions = webdriver.ActionChains(browser) browser.get('some_url_I_need') content = browser.find_element_by_id('content') # Error on this line