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

使用Selenium和Python点击网页按钮加载更多链接时遇问题求助

搞定Selenium加载更多按钮的两个问题

你在尝试用Selenium点击页面底部加载更多按钮时遇到了两个典型问题:XPath语法错误,还有元素被遮罩层拦截无法点击。我来帮你逐一解决:

一、修复XPath的SyntaxError

你写的XPath里双引号嵌套导致了语法错误——Python字符串外层用双引号的话,内层得用单引号,或者对双引号转义。另外,原来的concat写法容易匹配到带m-more子串的其他class(比如m-more-active),可以优化得更精准:

# 避免部分匹配的精准XPath写法
python_button = br.find_element_by_xpath("//*[contains(concat(' ', @class, ' '), ' m-more ')]")

要是这个m-more类在页面里是唯一的,直接用class匹配更简单:

python_button = br.find_element_by_xpath("//div[@class='m-more']")

另外,find_elements_by_xpath返回的是列表,如果你确定页面只有一个目标按钮,用find_element_by_xpath更直接,不用取索引[0],还能避免列表为空时的索引错误。

二、解决ElementClickInterceptedException(元素被拦截)

这个错误是页面上的global-fade遮罩层挡住了按钮,导致Selenium无法直接点击。给你几个靠谱的解决方法:

方法1:等待遮罩层消失再操作

先用WebDriverWait等待遮罩层不可见,确保页面加载完成后再点击按钮:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

br.get('https://ru.armeniasputnik.am/economy/')

# 最多等待10秒,直到遮罩层消失
WebDriverWait(br, 10).until(EC.invisibility_of_element_located((By.CLASS_NAME, 'global-fade')))

# 找到按钮并点击
button = br.find_element_by_css_selector('.m-more')
button.click()

方法2:用JavaScript直接触发点击

如果等待遮罩层还是不行,试试用JS直接点击元素,绕过页面的遮挡限制:

br.get('https://ru.armeniasputnik.am/economy/')

button = br.find_element_by_css_selector('.m-more')
# 执行JS脚本触发点击
br.execute_script("arguments[0].click();", button)

方法3:先滚动到按钮位置

有时候按钮不在浏览器视口中也会导致点击失败,先把按钮滚动到可见区域再点击:

import time

br.get('https://ru.armeniasputnik.am/economy/')

button = br.find_element_by_css_selector('.m-more')
# 平滑滚动到按钮居中位置
br.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});", button)
# 稍等1秒确保滚动完成
time.sleep(1)
button.click()

你可以把这些方法结合起来用,比如先滚动,再等遮罩层消失,最后用JS点击,这样成功率会更高。

内容的提问来源于stack exchange,提问作者M. Adshead

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:45:43