Дело в том, что метод
click создает событие
click, которое имеет свойства screenX и screenY, то есть должно происходить на "видимом" экране. Работа через Selenium не меняет того факта, что браузер и все скрипты на странице работают с неким "видимым" экраном. Иначе одной строкой на js можно было бы легко выявить весь обман и отсутствие живого человека по ту сторону браузера.
Но
find_elements_by_xpath возвращает все соответствующие данному xpath элементы дерева в независимости от их реальной видимости. При этом невозможно вызвать click на элементе за пределами "видимого" экрана.
Частично решить эту проблему можно путем вызова
scrollIntoView на элементе перед click. Но у этого метода тоже могут возникать проблемы с элементами, у которых (или у их родителей) style="display:none".