Python selenium WebElement().click()失败

项目场景:

学习使用selenium自动操作,练习使用浏览器获取 某音乐 的更多精彩评论时候,需要模拟点击【更多精彩评论】来获得折叠的评论
在这里插入图片描述
相关准备工作请参考:- chromedriver驱动的下载、安装


问题描述

模拟点击时候出错。
按照driver.find_element().click()理论上可行,实际会出现错误如下异常:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (340, 6898)
  (Session info: chrome=122.0.6261.95)
Stacktrace:
        GetHandleVerifier [0x00007FF6BD81AD22+56930]
		......
        BaseThreadInitThunk [0x00007FFEED387344+20]
        RtlUserThreadStart [0x00007FFEED8226B1+33

解决方案:

关键代码:

# 模块导入
from selenium.webdriver.common.action_chains import ActionChains


btn = driver.find_element("class name", "comment__show_all").find_element( "tag ame", "a")
actions = ActionChains(driver)
for i in range(4):
   actions.move_to_element(btn)
   actions.click()
   actions.perform()

附上自己练习的源码

# 导入模块
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver.common.action_chains import ActionChains

def find_text(driver: WebDriver):
	'''获取精彩评论的长度'''
    page_sorce = driver.page_source
    html = BeautifulSoup(page_sorce, "html.parser")
    for perTag in html.find_all(class_="mod_hot_comment"):
        if perTag.find("h2").text == "精彩评论":
            all_comments = perTag.find_all(class_="comment__list_item")
            print(len(all_comments))
            break
try:
    driver = webdriver.Chrome()
    # 企鹅** 自己选一首歌,将地址栏地址复制
    driver.get("https://.../n/.../songDetail/...") 
	time.sleep(2)
    find_text(driver) # 31
    btn = driver.find_element("class name", "comment__show_all").find_element(
        "tag name", "a"
    )
    actions = ActionChains(driver)
    for i in range(4):
        actions.move_to_element(btn)
        actions.click()
        actions.perform()
    find_text(driver) # 92
finally:
    driver.close()

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值