UI自动化之-使用DD_XOFT实现带有安全控件、U盾的输入

本文探讨了在UI自动化测试中遇到的安全控件输入问题,包括selenium等工具的局限性,介绍了使用DD插件模拟底层键盘输入的成功案例及其工作原理。

一,场景描述

最近在做web端的UI自动化测试,涉及与第三方页面的交互,发现selenium对带有安全控件,U盾的输入框使用senkeys方法不起作用,无法正常输入内容,此时放弃selenium的输入,更换其他思路。

  1. python模拟鼠标键盘操作pymouse、pykeyboard,失败!
  2. python win32con,win32api中的键盘,鼠标方法,失败!
  3. 系统事件的拷贝和粘贴,Ctrl+C,Crtl+V,失败!
  4. 操作系统的键盘事件输入,DD插件,成功!

问题总结,测试的时候发现,当使用U盾时,任务管理器的进程中会启动多个安全输入的进程,当杀死进程时,手动输入密码也不会成功,因此想到会不会是程序级的操作鼠标键盘层级太高,被监测到而无法输入,因此想到使用较为底层的DD插件,经过尝试发现是可行的,但是输入成功率较低

在这里插入图片描述

二,解决方法

  1. 采用第三方虚拟键盘DD XOFT,通过系统的键鼠事件输入,控件键鼠完成安全控件的输入
    官网地址 http://www.ddxoft.com 下载一个名为DD81200x64.64.dll的插件(其实就是在它官方群的文件中下载的)。
  2. 以下是官方的Python Demo代码,先在本地尝试能否运行
from ctypes import *
import time

print("Load DD!")
path = r'C:\Users\Administrator\Downloads\master-master\master-master\Example\App_python\vs2017\DD\DD94687.64.dll'
dd_dll = windll.LoadLibrary(path)
time.sleep(2)
print("dd_dll:",dd_dll)


st = dd_dll.DD_btn(0) #DD Initialize
print("st:",st)
if st==1:
    print("OK")
else:
    print("Error")
    exit(101)

print("Keyboard Left win")
#LWin is 601 in ddcode, 1=down, 2=up.
dd_dll.DD_key(601, 1)
dd_dll.DD_key(601, 2)
time.sleep(2)

print("Mouse move abs.")
dd_dll.DD_mov(200, 200)
time.sleep(2)

print("Mouse move rel.")
dd_dll.DD_movR(50, 50)
time.sleep(2)

print("Mouse Right button ")
#1==L.down, 2==L.up, 4==R.down, 8==R.up, 16==M.down, 32==M.up
dd_dll.DD_btn(4)
dd_dll.DD_btn(8)
time.sleep(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门一刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值