selenium遇到click失效问题解决

在使用selenium webdriver进行爬取淘宝信息,爬取一页结束后,进行翻页操作失败,仔细检查源码,发现在底端输入页码后模拟点击并未生效,本篇记录一下解决问题的办法。


问题描述

相关代码

# 使用谷歌浏览器
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)
# 定义一个等待,方便后面调用
wait = WebDriverWait(browser, 10)
# 函数功能:跳转到指定页数
def jump_to_page(page):
# 输入页码
input_page = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input"))
)
input_page.clear()
input_page.send_keys(page)
# 等待提交按钮可点击
submit_page = wait.until(
EC.element_to_be_clickable((By.CLASS_NAME, "btn J_Submit"))
)
submit_page.click()

在这里发现submit_page.click()并未生效。在网页中的这个地方:

mark

页码可以正常插入,但并未发生跳转,即click方法未生效。


解决办法

方法一:先点父元素

即先点击想要点击的父元素,再点击子元素。

browser.find_element_by_css_selector('#mainsrp-pager > div > div > div > div.form').click()
browser.find_element_by_css_selector('"#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit').click()

mark

淘宝真的强无敌,该方法并未起作用,是时候放大招了。

方法二:JS大法好

即直接用js直接去点击,简单粗暴,但有效。

js = 'document.getElementsByClassName("btn J_Submit")[0].click();'
browser.execute_script(js)


-------------本文结束感谢您的阅读-------------