Не удается щелкнуть веб-элемент с помощью python, selenium и pyvirtualdisplay.

У меня есть простой веб-сканер, который входит в Twitter, переходит на следующую страницу, а затем получает информацию от всех моих подписчиков (если они отключены и т. Д.), Щелкая значок шестеренки. Проблема в том, что функция щелчка перестала работать на моем новом компьютере.

Также я использую веб-драйвер Firefox().

Вот код, который я использую (вам нужно добавить свои учетные данные для Twitter, чтобы он работал): https://gist.github.com/anonymous/4c64054d01af77ae2c5c2b39a2165d80

Этот код прекрасно работает на одной машине, но не может щелкнуть элемент dom на другой. Вот некоторые характеристики, которые могут предложить понимание.

::GOOD BOX::
pip packages
- selenium 2.47.3
- pyvirtualdisplay 0.1.5

python 2.7
firefox 41.0
lib32z-dev 1:1.2.8.dfsg-1ubuntu1
python-lxml 3.3.3-1ubuntu0.1
python-dev 2.7.5-5ubuntu3
build-essential 11.6ubuntu6

-------------------------

::BAD BOX::
pip packages
- selenium 2.53.6
- pyvirtualdisplay 0.2

python 2.7
firefox-mozilla-build 47.0.1-0ubuntu1 (not sure why I need this, the other box doesn't seem to have it.  But things break if I remove it)
firefox 47.0.1
python-dev 2.7.11-1
libxml2-dev 2.9.3+dfsg1-1ubuntu0.1
libxslt-dev (1.1.28-2.1)
build-essential 12.1ubuntu2

Когда я запускаю этот код в "плохой коробке" и не улавливаю исключения, я получаю следующее:

selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (464, 1). Other element would receive the click: <div class="container"></div>

1 ответ

Решение

Это может быть из-за слишком маленького окна, в котором целевой элемент оказывается скрытым под другим. Попробуйте установить оригинальный размер:

driver.set_window_size(1920, 1200)

Вы также можете попытаться изменить поведение прокрутки, если ваш элемент окажется скрытым под верхним баннером:

DesiredCapabilities.FIREFOX["elementScrollBehavior"] = 1 #scroll bottom instead of top
driver = webdriver.Firefox()
Другие вопросы по тегам