一、前言

使用selenium进行自动化测试,节约了我们的人工和时间成本,增加测试的便利性。然而有些时候selenium也不能完全帮我们解决一些页面问题。我这篇主要写一下遇到有密码控件的输入框时的解决方案。

二、问题

我这里出现的是,pc端登录时会有一个密码控件的安装和输入,就像银行那种输支付密码时会有一个插件的安装,安装好之后才会出现一个输入框。我们知道普通的输入框,使用selenium定位之后,直接send_keys(param)就可以输入成功,但是针对这种密码控件的输入时大部分可能是不管用的。

三、解决方案

使用模拟键盘的方式,将我们所需要的输入的内容输入到密码控件的输入框中即可。而模拟键盘,这里又有很多种方式,我这里采用的是,使用DD插件方式进行输入,相关资源点击 这里 下载。

四、实现

1、首先,将我们已下载的资源解压,放入我们的项目中,可以专门创建lib文件包放入,如图:

2、编写一个InputPasswordUtil.py的文件,源码如下:

import time
from ctypes import windlllib_path = "\\DD94687.64.dll"    # 你存入该文件的路径
dd_dll = windll.LoadLibrary(lib_path)class InputPasswordUtil:"""模拟键盘输入密码内容"""def input_password(self, password):vk = {'5': 205, 'c': 503, 'n': 506, 'z': 501, '3': 203, '1': 201, 'd': 403, '0': 210, 'l': 409, '8': 208,'w': 302, 'u': 307, '4': 204, 'e': 303, '[': 311, 'f': 404, 'y': 306, 'x': 502, 'g': 405, 'v': 504,'r': 304, 'i': 308, 'a': 401, 'm': 507, 'h': 406, '.': 509, ',': 508, ']': 312, '/': 510, '6': 206,'2': 202, 'b': 505, 'k': 408, '7': 207, 'q': 301, "'": 411, '\\': 313, 'j': 407, '`': 200, '9': 209,'p': 310, 'o': 309, 't': 305, '-': 211, '=': 212, 's': 402, ';': 410}# 需要组合shift的按键。vk2 = {'"': "'", '#': '3', ')': '0', '^': '6', '?': '/', '>': '.', '<': ',', '+': '=', '*': '8', '&': '7','{': '[', '_': '-', '|': '\\', '~': '`', ':': ';', '$': '4', '}': ']', '%': '5', '@': '2', '!': '1','(': '9'}def down_up(code):dd_dll.DD_key(vk[code], 1)dd_dll.DD_key(vk[code], 2)def dd(key):if key.isupper():# 按下 500是shift键码dd_dll.DD_key(500, 1)down_up(key.lower())dd_dll.DD_key(500, 2)elif key in r'~!@#$%^&*()_+{}|:"<>?':dd_dll.DD_key(500, 1)down_up(vk2[key])dd_dll.DD_key(500, 2)else:down_up(key)# 依次输入密码字符for key in password:dd(key)time.sleep(0.5)

3、将上面的方法调用到你自己的脚本之中,传入你自己的密码即可;

注意:每个密码控件的限制输入可能是不一样的,我登录的网站,我尝试模拟输入数字、字母和字符组合的密码时,输入是不成功的,有可能时密码控件服务中是写了禁止模拟键盘输入这一类,但是纯数字输入是成功的。针对这一块没有仔细研究,有没有大佬可以指教一下,可以留言给我,谢谢!

PS:之前也没有记录清楚,今天把自己坑了。这个ctypes只支持python2.5以上的版本,不支持python3。特别注意一下

五、关于其他方案

我还看到其他很多种方法模拟键盘输入,比如python借助win32、hook的方式来模拟键盘输入,但是在我这里,输入不成功,我只把代码贴出来,仅供参考,我把参考地址贴到这里: https://blog.csdn.net/qq_38839677/article/details/83374219

import timefrom PyUserInput.pykeyboard import PyKeyboarddef input_password(password):k = PyKeyboard()for num in password:time.sleep(1)k.press_keys(num)  # PyKeyBoard中有很多输入方法print("num", num)

python 自动化测试(2):针对密码输入框为密码控件时的解决方案相关推荐

  1. 手势密码控件--只需调用本控件即可实现自动锁屏的控件

    手势密码在很多应用中应用较多,手势密码的view代码用的系统手势键盘的代码. 包括手势密码的设置,手势密码的验证,以及应用的自动锁屏. 本控件可保护应用内隐私 本控件以实现x秒之后无操作自动锁屏.使用 ...

  2. 密码控件安全技术浅析及攻击实例

    https://bbs.pediy.com/thread-175448.htm 密码控件是一个很常见的控件,这篇文章主要介绍一下安全密码控件的一些实现思路和攻击思路. 1 物理密码键盘和密码控件的对比 ...

  3. wxpython bind自定义_wxpython 支持python语法高亮的自定义文本框控件的代码

    在研发闲暇时间,把开发过程中比较重要的一些代码做个珍藏,下面的代码内容是关于wxpython 支持python语法高亮的自定义文本框控件的代码,应该是对大家也有用. import keyword im ...

  4. php支付密码控件,Android高仿微信支付密码输入控件实例代码

    这篇文章主要为大家详细介绍了Android高仿微信支付密码输入控件的具体实现代码,供大家参考,具体内容如下 像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现 ...

  5. 人行征信密码控件卸载后残留,导致fiddler自动关闭解决办法

    人行征信密码控件卸载后,fiddler自动关闭解决办法 前段时间去下载了人行征信查询密码输入插件.也就是 这个东西.使用完了,之后卸载了. 但是当我打开平时使用的调试工具fiddler的时候后,不能正 ...

  6. Python tkinter 学习笔记(2)-- 控件、组件(二)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 Python tkinter 学习笔记(2)-- 控件.组件(一) > 续上一章节 Python tki ...

  7. Python Tkinter教程(二)——Label控件、Frame控件、Button控件的完整参数和所有方法及详细用法

    >>>[上节回顾:tkinter编程基本步骤.窗口基本属性及Toplevel控件的使用]<<< Python Tkinter教程(二)         这篇博客将详 ...

  8. Python tkinter 学习笔记(2)-- 控件、组件(一)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 目录 一.Tkinter 15种基础控件 1. Button 按钮控件 2.Canvas 画图控件 3.Che ...

  9. 用Silverlight打造一个相对安全的密码控件

    笔者最近的一个项目涉及到了支付动作,出于安全考虑,需要在密码控制上防键盘记录,传输加密等进行处理,其中难点在于防键盘记录. 现有的银行.支付宝.财付通.快钱等的支付控件都是自行开发,还需要对控件进行证 ...

最新文章

  1. c 类别构造函数需要包含所有成员吗_C++默认成员函数解析
  2. 史上最“可怕”的数学科普,能全都看懂的只有天才!
  3. unique函数_C++核心准则C.35:基类的析构函数必须满足的条件
  4. Java 笔试题---Java与编程模式--7月6日
  5. Linux故障解决(4)——新安装的CentOS 系统无法上网解决方法 (未知的名称或服务)
  6. 软件著作权提交源代bai码格式_软件著作权使用说明书字体要求-软件著作权提交源代码格式要求...
  7. 为什么Audition cc2017扫描不了电音插件,你需要这个软件
  8. 【微积分】2.1一元函数微分
  9. G码云+hexo搭建博客
  10. precede和previous_preceding,previous,prior辨析.ppt
  11. 万洲金业:黄金ETF如何影响黄金价格?
  12. HDOJ 2010 水仙花数
  13. 幼儿抽象逻辑思维举例_【干货】教师资格《幼儿保教知识与能力》重点归纳一...
  14. TC工具 模拟Linux网卡限速、丢包
  15. 解读照明设备出口沙特具体法规要求!
  16. 易经之乾卦和坤卦(从职场角度分析)
  17. 如何一天做出新闻搜索引擎(0)
  18. 23 《武士道》 -豆瓣评分7.8
  19. 5层因特网协议栈 和 7层OSI参考模型
  20. 免费教程大型网站整理大集合

热门文章

  1. qpieseries显示百分比_为饼图添加百分比显示效果
  2. 早该消失的埃菲尔铁塔为何存在至今?
  3. MAC地址和IP地址说明
  4. 修复ASUS in WinRE教程
  5. ESP32基础应用之使用两个ESP32通过阿里云物联网平台实现相互通信
  6. 使用梯子导致的浏览器不能正常使用
  7. MIGO为玩家带来接近无限的可能
  8. 纷享销客《快消行业CRM应用与选型指南》重磅发布
  9. 三星Android Pie软件,三星开始向欧洲Galaxy S9用户推送Android Pie稳定版更新包
  10. 自适应中值滤波器python实现