繁体   English   中英

python selenium 通过 xpath 查找元素返回链接列表但元素不可交互

[英]python selenium find elements by xpath returns a list of a links but element not interactable

我在 www.python.org/downloads 上使用这个 xpath //a[contains(., 'Download Python')]

在 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: Message: element not interactable

如果我打印每个元素的文本,只有第三个元素显示文本“下载 Python 3.7.4” rest 打印空白

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 有效

此问题与您的代码无关,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>

您需要 select 样式 = "" rest 其他的不会显示在页面上。

也可以使用带index的xpath,它会指向index对应的按钮

(Xpath)[index]

例如:(//*[@class="button"])[0] - 对于第一个按钮

让我知道是否有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM