Selenium Timout на RaspberryPi в ожидаемом состоянии - PullRequest
0 голосов
/ 21 марта 2020

Задача

Я хочу выполнить веб-задачу, используя Selenium, geckodriver (сборка ARM) и Iceweasel на моем RaspberryPi 3. Конечно, код работает без проблем на моей машине для разработки (Ubuntu, Intel, 64bit), конечно используя подходящую сборку geckodriver. Код также оказался успешным в докеризованном контейнере. Однако при выполнении на RaspberryPi я получаю указанную ошибку тайм-аута.

Код

Сайт открывается в новом окне, поэтому я переключаюсь на второе в window.handles.

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from helpers.automation_helper import *

to_website.click()

el = WebDriverWait(driver, 20).until(
    EC.number_of_windows_to_be(2)
)

driver.switch_to.window(driver.window_handles[1])

while get_events_left(driver):
    ...

На открывшейся странице я ожидаю кнопки редактирования (= мои события), которые я намерен вернуть, как только они будут видны. Пустой массив должен быть возвращен, если нет доступных событий, поэтому не может быть выполнено while l oop. Ожидаемое состояние - это ошибка, возникающая на RaspberryPi.

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

def get_events_left(driver):
    WebDriverWait(driver, 20).until(
        EC.visibility_of_all_elements_located((By.XPATH, "//button[contains(@id, 'protocolEvent')]"))
    )
    return driver.find_elements_by_xpath("//button[./span/span/svg-icon[@name='edit']]")

Ошибка

Traceback (most recent call last):
  File "app.py", line 61, in <module>
    while get_events_left(driver):
  File "/path/to/app/helpers/automation_helper.py", line 39, in get_events_left
    EC.visibility_of_all_elements_located((By.XPATH, "//*[contains(@id,'protocolEvent')]"))
  File "/path/to/app/venv/lib/python3.7/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...