ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] 前言 有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应。这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了。 本篇用2种方法解决这种诡异的点击事件失效问题 <br /> ## 一、遇到的问题 1. 在练习百度的搜索设置按钮时,点保存设置按钮,alert弹出没弹出(代码没报错,只是获取alert失败),相信不只是我一个人遇到过。 ![](http://images2015.cnblogs.com/blog/1070438/201703/1070438-20170317233641213-2100412048.png) <br /> 二、点击父元素 1. 遇到这种问题,应该是前面操作select后导致的后遗症(因为我注释掉select那段是可以点击成功的) 2. 第一种解决办法,先点击它的父元素一次,然后再点击这个元素 ![Snipaste_2020-08-21_15-42-01.png](https://i.loli.net/2020/08/21/HeIBrWRagD5Sx2q.png) 3. 实现代码如下 ![Snipaste_2020-08-21_15-46-44.png](https://i.loli.net/2020/08/21/l4pzEIc1SPA2mvj.png) <br /> ## 三、js直接点击 1. 遇到这种诡异问题,是时候出绝招了:js大法 2. 用js直接执行点击事件 ![Snipaste_2020-08-21_15-48-37.png](https://i.loli.net/2020/08/21/UY3x2fPQdK4Objz.png) <br /> ## 四、参考代码 ``` # coding:utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select import time driver = webdriver.Chrome() driver.get("http://www.baidu.com") mouse = driver.find_element("link text", "设置") ActionChains(driver).move_to_element(mouse).perform() time.sleep(3) driver.find_element("link text", "搜索设置").click() time.sleep(3) driver.find_element("id", "nr_2").is_selected() # 方法一:先点击父元素 driver.find_element("id", "se-setting-7").click() driver.find_element("class name", "prefpanelgo").click() # 方法二:用js直接去点击 js = 'document.getElementsByClassName("prefpanelgo")[0].click();' driver.execute_script(js) ```