You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同纵横比窗口下Selenium运行报错,分页元素被遮挡无法点击求解

解决方案

方案1:使用JS触发点击(最便捷)

Selenium原生click方法要求元素在视口内且不被遮挡,而JS执行的点击可以忽略遮挡状态,直接触发元素绑定的点击事件,修改循环内代码如下:

for page in range(2, 10):
    try:
        page_ele = WebDriverWait(driver, 20).until(
            # 只需要判断元素存在即可,不需要可见
            EC.presence_of_element_located(
                (
                    By.XPATH,
                    f"//*[@id='ctl00_ContentPlaceHolder1_gv_Branch']/tbody/tr[22]/td/table/tbody/tr/td[{page}]/a",
                )
            )
        )
        # 用JS执行点击,跳过可见性和遮挡校验
        driver.execute_script("arguments[0].click();", page_ele)

方案2:隐藏遮挡的悬浮元素(根源解决)

进入页面后直接执行JS把底部遮挡的ATM/网点固定栏隐藏,后续所有操作都不会再遇到遮挡问题,原有点击逻辑无需修改:

driver.get("https://www.iob.in/Branch.aspx")
# 隐藏底部固定悬浮的ATM/网点栏,避免遮挡分页控件
driver.execute_script("document.querySelector('.footer_sticky').style.display = 'none';")

方案3:滚动元素到指定位置避开遮挡

如果不想修改页面元素属性也不想用JS点击,可以在点击前把分页元素滚动到视口顶部,避开底部悬浮栏:

page_ele = WebDriverWait(driver, 20).until(
    EC.presence_of_element_located(
        (
            By.XPATH,
            f"//*[@id='ctl00_ContentPlaceHolder1_gv_Branch']/tbody/tr[22]/td/table/tbody/tr/td[{page}]/a",
        )
    )
)
# 将元素滚动到视口顶部,避免被底部悬浮栏遮挡
driver.execute_script("arguments[0].scrollIntoView(true);", page_ele)
page_ele.click()

内容的提问来源于stack exchange,提问作者AAYUSH JAIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:24:04