Я использую этот xpath // a [содержит (., 'Загрузить Python')] на www.python.org/downloads
в инструментах разработчика Chrome Я получаю 4 совпадения, каждое из которых соответствует следующему
<a class="button" href="https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.9.pkg">Download Python 3.7.4</a> <a class="button" href="https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz">Download Python 3.7.4</a> <a class="button" href="https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe">Download Python 3.7.4</a> <a class="button" href="https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe">Download Python 3.7.4</a>
проблема только в том, что щелкает третий, остальные выдают ошибку ElementNotInteractableException: Сообщение: элемент не взаимодействует
если я печатаю текст каждого элемента, только третий отображаеттекст 'Скачать Python 3.7.4', остальное выведите на печать пустым
elems = driver.find_elements_by_xpath( "//a[contains(., 'Download Python')]") for elem in elems: print("-------") print(elem.text) print(elem.tag_name)
------- a ------- a ------- Download Python 3.7.4 a ------- a
в результате только elems [3] .click works
Эта проблема не с вашим кодом, страница загрузки python определяет ОС, которую вы просматриваете, и показывает ссылку для скачивания только для этой ОС. Всего таких кнопок 4
<div class="download-os-mac-osx" style="display: none;"> <h1 class="call-to-action">Download the latest version for Mac OS X</h1> <p class="download-buttons"> <a class="button" href="https://www.python.org/ftp/python/3.7.4/python-3.7.4-macosx10.9.pkg">Download Python 3.7.4</a> </p> </div> <div class="download-os-source" style="display: none;"> <h1 class="call-to-action">Download the latest source release</h1> <p class="download-buttons"> <a class="button" href="https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz">Download Python 3.7.4</a> </p> </div> <div class="download-os-windows" style=""> <h1 class="call-to-action">Download the latest version for Windows</h1> <p class="download-buttons"> <a class="button" href="https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe">Download Python 3.7.4</a> </p> </div> <div class="download-unknown" style="display: none;"> <h1 class="call-to-action">Download the latest version of Python</h1> <p class="download-buttons"> <a class="button" href="/downloads/release/python-374/">Download Python 3.7.4</a> </p> </div>
Вам нужно выбрать ту, которая имеет style = "", остальные не будут отображаться на странице.