在使用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)
这两种都是可以的 点击事件 一种是键盘点击, 第二种 就祭出我们的execute_script 执行js, 简单粗暴
driver.find_element_by_id("kw").send_keys("天下")
time.sleep(3)
driver.find_element_by_id("su").send_keys(Keys.ENTER)