python + selenium 模拟键盘升级版PyUserInput

前言
在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!)
有时候我们并不是非要去定位到这个按钮再去点击,学会使用键盘的快捷键操作,也能达到一样的效果。
之前讲过一篇Selenium2+python自动化75-非input文件上传(SendKeys)这个当时是基于python2写的。
最近很多小伙伴开始用python3了,这个SendKeys在python3上没法用,python3需要用PyUserInput,详细安装教程地址【selenium+python自动化85-python3.6上SendKeys报错用PyUserInput取代】
安装依赖包:
依赖pywin32
依赖pyHook
PyKeyboard键盘操作
PyUserInput模块里面主要有两个类:
PyMouse, 专门模拟鼠标操作
PyKeyboard,专门模拟键盘上的操作
先用手工在键盘上操作下,记住操作步骤:按Tab键--按Enter键

代码参考
# coding:utf-8

from selenium import webdriver
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import time

driver = webdriver.Firefox()
driver.get("https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe")

time.sleep(3)
# 默认在取消按钮上,先切换到保存文件上
k = PyKeyboard()

# 发送tab
k.press_key(k.tab_key)
k.release_key(k.tab_key)

time.sleep(3)
# 发送回车
这里用到两个方法,一个是press_key按住Tab键,另外一个是release_key释放按键。其实还有个方法tap_key
tap_key模拟点击
先看下tap_key源码是怎么设计的,实际上tap_key就是封装的press_key和release_key这2个方法
character 传对应的键盘事件
n=1 默认只点一次
interval=0 如果有多次点击操作,中间的间隙时间,默认sleep时间为0
def tap_key(self, character=‘‘, n=1, interval=0):
"""Press and release a given character key n times."""
for i in range(n):
self.press_key(character)
self.release_key(character)
time.sleep(interval)
改成tap_key操作
# coding:utf-8

from selenium import webdriver
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import time

driver = webdriver.Firefox()
driver.get("https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe")

time.sleep(3)
# 默认在取消按钮上,先切换到保存文件上
k = PyKeyboard()

# 模拟Tab
k.tap_key(k.tab_key)
time.sleep(3)
# 发送Enter回车
k.tap_key(k.enter_key)
PyKeyboard其它操作
除了能模拟tab,enter这种操作,也能模拟在输入框输入内容.
基本操作方法,如输入h:k.tap_key(“h”)
# coding:utf-8
from selenium import webdriver
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import time

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3)
k = PyKeyboard()

def input_str(s):
‘‘‘输入一串英文‘‘‘
for i in s:
k.tap_key(i)
k.tab_key(k.enter_key)

input_str("helloworld!")
python3.6安装PyUserInput

前言

python2上安装SendKeys库,对于不好定位的元素,用快捷键操作是极好的,那么在3.6上安装时,会报错

python3.6安装SendKeys报错

1.python3.6安装SendKeys是无法安装的,会报错

pip install SendKeys

32位的python3.6安装PyUserInput

1.python3.6分2个版本,1个是32位的python3.6;另外一个是64位的python3.6.

  • 如果你的电脑是32位的,装python3.6 32位版本,直接用pip安装是没问题的
  • 如果你的电脑是64位的,装python3.6 32位版本,也是没问题的

pip install PyUserInput

64位的python3.6安装PyUserInput

1.如果你的电脑是64位的,装python3.6 64位版本,那么问题就来了

2.报错:No matching distribution found for pyHook (from PyUserInput)

pyHook安装

1.pyHook下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

2.下载到本地后,用pip安装

pip install pyHook的本地路径

3.安装完pyHook后,继续安装PyUserInput时候,会报错:No matching distribution found for pywin32 (from PyUserInput)

pywin32

1.pywin32下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

2.下载到本地后,安装

pip install pywin32的本地路径

导入PyMouse报错

1.环境安装完了,你以为没事了,那就是too young了,接下来导入模块后直接运行,报错:ImportError: DLL load failed: 找不到指定的模块。

2.问题原因:pywin32-221版本太高了,换成pywin32-220

pywin32-220下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/

3.先卸载pywin32: pip uninstall pywin32

4.再重新安装pywin32-220版本,接下来再运行就OK了

标签: selenium

遇到win32需要重新安装PyUserInput

原文地址:https://www.cnblogs.com/wyj497022944/p/9626816.html

时间: 2024-10-28 14:29:44

python + selenium 模拟键盘升级版PyUserInput的相关文章

python+selenium模拟键盘输入

from selenium.webdriver.common.keys import Keys #键盘导入类 ------------------------------------------------------------------------------ 常用的键盘操作: send_keys(Keys.BACK_SPACE):删除键(BackSpace) send_keys(Keys.SPACE):空格键(Space) send_keys(Keys.TAB):制表键(TAB) sen

python + selenium 模拟键盘

ActionChains类鼠标操作的常用方法:引入ActionChains类:from selenium.webdriver.common.action_chains import ActionChains 1.右击方法:context_click()实例:ActionChains(driver).context_click(driver.find_element_by_id("id")).perform()---------------------------------------

通过selenium模拟键盘输入链接整理

Press Enter key in Selenium script:http://my.oschina.net/u/855532/admin/new-blog selenium模拟键盘:http://blog.sina.com.cn/s/blog_670bfea2010197qh.html Selenium WebDriver 中鼠标和键盘事件分析及扩展:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/

python selenium鼠标键盘操作(ActionChains)

用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains selenium.webdriver.common.action_chains.ActionChains(driver) 这个类基本能够满足我们所有对鼠标操作的需求. 1.ActionChains基本用法 首先需要了解ActionChains的执行原理,当你调用ActionChains的方法时,不会立即执行

九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)

研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接.输入表单,点击按钮提交等.所以我们使用它可以很方便的来登录. 但是作为新手还是多多分析,尽量少用这个,以便提高自己的技术.在研究几天,在写一个自己满意的. import time # import random from bs4 import Beautifu

九、Python+Selenium模拟登录

研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接.输入表单,点击按钮提交等.所以我们使用它可以很方便的来登录. 但是作为新手还是多多分析,尽量少用这个,以便提高自己的技术.在研究几天,在写一个自己满意的. import time # import random from bs4 import Beautifu

python selenium 模拟手机浏览器

脚本如下: from selenium import webdriver mobile = {'deviceName': 'Apple iPhone 4'} //设置所模拟的硬件 path='C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe' options = webdriver.ChromeOptions() options.add_experimental_option('mobileEmulati

python selenium模拟滑动操作

selenium.webdriver提供了所有WebDriver的实现,目前支持FireFox.phantomjs.Chrome.Ie和Remote quit()方法会退出浏览器,而close()方法只是关闭页面,但如果只有一个页面被打开,close()方法同样会退出浏览器 使用remote WebDriver 使用remote WebDriver之前,需要先启动selenium server,命令如下: java -jar selenium-server-standalone-2.x.x.ja

使用python - selenium模拟登陆b站

思路 输入用户名密码点击登陆 获取验证码的原始图片与有缺口的图片 找出两张图片的缺口起始处 拖动碎片 功能代码段 # 使用到的库 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_condit