目录
1. 模拟鼠标直接点击事件2. 拦截弹出窗口3. 创建并派发点击事件4. 使用 JavaScript 模拟鼠标悬停后点击5. 滚动到元素并点击6. 等待元素可点击后执行点击我们在写selenium获取网络信息的时候,有时候我们会受到对方浏览器js的监控,对方通过分析用户行为模式,如点击、滚动、停留时间等,网站可以识别出异常行为,进而对Selenium爬虫进行限制。
这里我们可以加入JavaScript的使用。Selenium可以执行JavaScript,通过使用 execute_script
方法,来执行点击操作。
它可以绕过一些 Selenium 直接操作元素时可能遇到的问题,比如元素未完全加载、元素被遮挡或者需要更复杂的交互。
以下是几种使用 execute_script
来执行点击操作的方法:
1. 模拟鼠标直接点击事件
element = driver.find_element_by_id("myButton")driver.execute_script("arguments[0].click();", element)
这段代码找到 ID 为 myButton
的元素,并使用 JavaScript 直接触发该元素的点击事件。
2. 拦截弹出窗口
通过覆盖浏览器内置的方法,如alert、confirm、prompt等,避免弹出窗口
driver.execute_script('''window.alert = function() { console.log("Alert function called, but blocked.");};window.confirm = function() { console.log("Confirm function called, but blocked."); return true; // 返回true,以模拟用户点击“确定”按钮};window.prompt = function() { console.log("Prompt function called, but blocked."); return null; // 返回null,以模拟用户点击“取消”按钮};''')