如何使用 selenium webdriver python 单击列表中没有 id 的跨度?

问题描述 投票:0回答:1

我无法通过 selenium Web 驱动程序单击“Span 1”。这是来自网络的检查元素:

<div class="m-menu__subnav siak_menu_lm01" data-cek="02">
                    <ul class="m-menu__content">
                        <li class="m-menu__item">
                            <h3 class="m-menu__heading m-menu__toggle">
                                <i class="m-menu__link-bullet m-menu__link-bullet--line m--visible-tablet-and-mobile-table-cell">
                                    <span></span>
                                </i>
                                <span class="m-menu__link-text">AA</span>
                                <i class="m-menu__ver-arrow la la-angle-right"></i>
                            </h3>
                            <ul class="m-menu__inner">
                                <li class="m-menu__item" m-menu-link-redirect="1" aria-haspopup="true">
                                    <a href="dafduk/wni/dataKeluarga/searchList" class="m-menu__link ajaxify" data-cek="020101" data-target="siakContent" data-hidden="siakContentHandlebar" data-server="true" data-refresh="m_header_menu_default">
                                        <i class="m-menu__link-bullet m-menu__link-bullet--dot m--visible-tablet-and-mobile-table-cell">
                                            <span></span>
                                        </i>
                                        <span class="m-menu__link-text">Span 1</span>
                                    </a>
                                </li>
                                <li class="m-menu__item" m-menu-link-redirect="1" aria-haspopup="true">
                                    <a href="dafduk/wni/biodataEktp/searchList" class="m-menu__link ajaxify" data-cek="020102" data-target="siakContent" data-hidden="siakContentHandlebar" data-server="true" data-refresh="m_header_menu_default">
                                        <i class="m-menu__link-bullet m-menu__link-bullet--dot m--visible-tablet-and-mobile-table-cell">
                                            <span></span>
                                        </i>
                                        <span class="m-menu__link-text">Span 2</span>
                                    </a>
                                </li>
                            </ul>
                        </li>
                        <li class="m-menu__item">
                            <h3 class="m-menu__heading m-menu__toggle">
                                <i class="m-menu__link-bullet m-menu__link-bullet--line m--visible-tablet-and-mobile-table-cell">
                                    <span></span>
                                </i>
                                <span class="m-menu__link-text">BB</span>
                                <i class="m-menu__ver-arrow la la-angle-right"></i>
                            </h3>
                            <ul class="m-menu__inner">
                                <li class="m-menu__item" m-menu-link-redirect="1" aria-haspopup="true">
                                    <a href="dafduk/oa/dataKeluarga/searchList" class="m-menu__link ajaxify" data-cek="020201" data-target="siakContent" data-hidden="siakContentHandlebar" data-server="true" data-refresh="m_header_menu_default">
                                        <i class="m-menu__link-bullet m-menu__link-bullet--dot m--visible-tablet-and-mobile-table-cell">
                                            <span></span>
                                        </i>
                                        <span class="m-menu__link-text">Span 3</span>
                                    </a>
                                </li>
                                <li class="m-menu__item" m-menu-link-redirect="1" aria-haspopup="true">
                                    <a href="dafduk/oa/biodataEktp/searchList" class="m-menu__link ajaxify" data-cek="020202" data-target="siakContent" data-hidden="siakContentHandlebar" data-server="true" data-refresh="m_header_menu_default">
                                        <i class="m-menu__link-bullet m-menu__link-bullet--dot m--visible-tablet-and-mobile-table-cell">
                                            <span></span>
                                        </i>
                                        <span class="m-menu__link-text">Span 4</span>
                                    </a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </div>

我尝试使用此代码:

clickSpan = driver.find_element("xpath",'//span[text()="Span 1"]')
clickSpan.click()

但这不起作用,我收到此错误:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class="m-menu__link-text">...</span> is not clickable at point (713, 175). Other element would receive the click: <div class="blockUI blockOverlay" style="z-index: 99999; border: none; margin: 0px; padding: 0px; width: 100%; height: 100%; top: 0px; left: 0px; background-color: rgb(0, 0, 0); opacity: 0.03; cursor: wait; position: absolute;"></div>

抱歉,我对 selenium webdriver 很陌生。谁能帮我?我真的很感谢你的帮助!

python selenium-webdriver xpath webdriver
1个回答
0
投票

以下错误信息:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class="m-menu__link-text">...</span> is not clickable at point

表明无法单击所需的元素,因为其他一些元素正在拦截单击。

遇到这种情况,您可以尝试以下方法来解决。

  1. 使用 Selenium 的 显式等待
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Span 1']"))).click()

进口:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
  1. 使用
    execute_script()
time.sleep(5)
clickSpan = driver.find_element(By.XPATH, "//span[text()='Span 1']")
driver.execute_script("arguments[0].click();", clickSpan)

进口:

import time
© www.soinside.com 2019 - 2024. All rights reserved.