Selenium Webdriver отсутствует щелчок в безголовый Firefox - PullRequest
0 голосов
/ 02 мая 2018

У меня есть тест на селен, написанный на python (3.5.2) с использованием Firefox (v59.0.2 64-bit) в Ubuntu Linux (16.04.4 LTS). Версия geckodriver v0.20.1. Я автоматизирую твит в Твиттере, и в режиме графического интерфейса он работает идеально каждый раз. Однако в режиме без головы он пропускает один и тот же щелчок по конкретному элементу каждый раз. Кто-нибудь видел это раньше? Также есть предложения по отладке в режиме без головы?

from selenium.webdriver.support import expected_conditions as ec

# Here is the way I am getting the element
@property
def sending_message_close_button(self):
    self._sending_tweets_message_close = self._driver.wait.until(ec.element_to_be_clickable((By.CSS_SELECTOR,
                                                                                             "div.alert-messages.js-message-drawer-visible a.Icon.Icon--close.Icon--medium.dismiss")))
    return self._sending_tweets_message_close

А вот вызов для щелчка по элементу в методе того же класса:

self.sending_message_close_button.click()

Я попытался с помощью ActionBuilder перейти к элементу и щелкнуть по нему. Я также попробовал клик по JavaScript. Ни один не работал.

Вот как я инициализирую браузер (URL отредактирован для конфиденциальности):

@property
def webdriver(self):
    if self._webdriver is None:
        options = Options()
        options.add_argument('-headless')
        profile = FirefoxProfile()
        profile.set_preference("network.proxy.type", 2)
        if self._env == 'demo':
            profile.set_preference("network.proxy.autoconfig_url", "")
        elif self._env == 'stage':
            profile.set_preference("network.proxy.autoconfig_url", "")
        profile.set_preference("network.proxy.no_proxies_on", "localhost")
        if self._use_options:
            self._webdriver = webdriver.Firefox(firefox_profile=profile, options=options)
        else:
            self._webdriver = webdriver.Firefox(firefox_profile=profile)
        self._webdriver.implicitly_wait(10)
    return self._webdriver
...