在使用selenium模拟操作时经常遇到一些使用原始方法解决不了的问题。
click失效
曾经多次遇到元素click()失败的情况,经典的例子就是某网站的登录框。
一般遇到click失败时我的一般处理方法是改用send_keys(Keys.ENTER)
,直接用发回车键,简单粗暴。
但是某网站的登录框,直接定位按钮元素click无效,发送回车键也无效,分析应该是焦点问题,但是试了多种方法也不成。
经过实验,当焦点在登录框的用户文本框中,按回车会依次从用户名框、密码框到提交按钮。
定位用户名文本框,发送多个回车键,顺利登录。
当然麻烦点调用js也可以实现。
这种问题在Spynner、Ghost.py中也会出现,应当是某种前端框架或者webkit内核的问题。
文本框输入内容失败
这种问题同样是在某网站登录框中遇到的。
最常见的文本框输入内容出问题是文本框的placeholder造成的。
解决方法:先用element.clear()
清除原来文本框的placeholder,再用 element.send_keys(content)
发送内容。
但是这种方法仍然处理不了,只能祭出execute_script
了。