Selenium模拟操作中按钮点击(click) 失效解决方法 这两种都是可以的 点击事件 一种是键盘点击, 第二种 就祭出我们的execute_script 执行js, 简单粗暴 js = 'document.getElementById("su").click();' driver.execute_script(js) 这两种方法都是可以的,我们这里面没有采用原始的方式 .click() 当然 这里面采用原始的 click() 也是可以的, 只不过是举一个测试的例子

在使用selenium模拟操作时经常遇到一些使用原始方法解决不了的问题。
click失效问题

曾经多次遇到元素click()失败的情况,经典的例子就是某网站的登录框。

一般遇到click失败时我的一般处理方法是改用send_keys(Keys.ENTER),直接用发回车键,简单粗暴。

但是某网站的登录框,直接定位按钮元素click无效,发送回车键也无效,分析应该是焦点问题,但是试了多种方法也不成。

经过实验,当焦点在登录框的用户文本框中,按回车会依次从用户名框、密码框到提交按钮。

定位用户名文本框,发送多个回车键,顺利登录。

当然麻烦点调用js也可以实现。

这种问题在Spynner、Ghost.py中也会出现,应当是某种前端框架或者webkit内核的问题。

文本框输入内容失败

这种问题同样是在某网站登录框中遇到的。
最常见的文本框输入内容出问题是文本框的placeholder造成的。

解决方法:先用element.clear()清除原来文本框的placeholder,再用 element.send_keys(content)发送内容。

但是这种方法仍然处理不了,只能祭出execute_script了。

我给一个简单的代码来演示一下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url=url)
import time
time.sleep(3)

driver.find_element_by_id("kw").send_keys("天下")
time.sleep(3)
driver.find_element_by_id("su").send_keys(Keys.ENTER)

driver.execute_script(js)

这两种方法都是可以的,我们这里面没有采用原始的方式 .click()

当然 这里面采用原始的 click() 也是可以的, 只不过是举一个测试的例子