Selenium模拟操作中按钮点击(click) 失效解决方法

摘要:
在使用硒模拟操作时,我们经常会遇到一些原始方法无法解决的问题。然而,在网站的登录框中,直接位置按钮的点击元素无效,返回键也无效。分析应该是重点,但不可能尝试很多方法。实验结束后,当焦点位于登录框的用户文本框中时,按Enter键将依次从用户名框、密码框移动到提交按钮。最常见的文本框输入问题是由文本框的占位符引起的。但该方法仍然无法处理它,只能执行Script。

在使用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)

js = 'document.getElementById("su").click();' driver.execute_script(js) 这两种方法都是可以的,我们这里面没有采用原始的方式 .click() 当然 这里面采用原始的 click() 也是可以的, 只不过是举一个测试的例子

免责声明:文章转载自《Selenium模拟操作中按钮点击(click) 失效解决方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇log4j2oracle instantclient_11_2插件安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

selenium webdriver 执行原理

selenium webdriver源码结构 Python版的源码结构,只看webdriver相关 selenium-masterpyseleniumwebdriver emote 下的文件 |-- command.py 命令相关...

【Web自动化测试——代码篇八】常用方法——上传/下载文件

上传文件 对于Web页面的上传功能实现一般有一下俩种方式: 普通上传:将本地文件的路径作为一个值放在input标签中,通过form表单将这个值提交给服务器(不做介绍send_keys方法)。 AutoIt上传:利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。 下面我们实际操作一下来讲解AutoIt上传文件的过程:1、安装AutoIt(下载...

selenium(六)Headless Chrome/Firefox--PhantomJS停止支持后,使用无界面模式。

简介: 以前都用PhantomJS来进行无界面模式的自动化测试,或者爬取某些动态页面。 但是最近selenium更新以后,'Selenium support for PhantomJS has been deprecated, please use headless '提示不支持PhantomJs,请使用headless模式。 好吧,我们还是继续使用...

Matlab中的静态文本框中显示多行内容

Matlab中的静态文本框中显示多行内容 有时候,我们在GUI中利用静态文本框显示程序的结果,但是结果很长,一行未必可以显示的开,而静态文本框不像edit或listbox那样通过滚动条来显示多行内容,即便设置了max和min属性也是一样的。 于是,怎么在静态文本框中显示多行是很有意义的: 解决方法,利用函数textwrap: figure('units'...

selenium cookie登录

前言 爬虫方向的小伙伴们都知道网页爬虫经常遇到的问题就是登录账户,有些简单的网站我们可以简单的send key来输入账户密码就可以登录,但是有很多网站需要验证码之类的就不太好用了,这时候就体现到了cookie登录的优点了,前段时间网上搜了搜,发现没有什么完整的教程,本文就使用selenium来cookie登录为例做一个简单的教程。 环境准备 python...

selenium实现淘宝的商品爬取

一、问题 本次利用selenium自动化测试,完成对淘宝的爬取,这样可以避免一些反爬的措施,也是一种爬虫常用的手段。本次实战的难点: 1.如何利用selenium绕过淘宝的登录界面 2.获取淘宝的页面内容实现翻页,并判断是否翻页成功。 3.获取每一页的信息,实现数据的抓取工作。  4.环境python3.6,对应的Chrome的webdriver驱动网址:...