Selenium遇到的问题5 键盘操作无响应,下载win32出错
2017-09-22 11:19
253 查看
Selenium遇到的问题5 键盘操作无响应,下载win32出错
在使用selenium爬取网页图片的时候,想要点击鼠标右键,用键盘操作(Shift+‘v’)保存图片
没有响应。
键盘操作改了好几遍:
ActionChain(driver).key_down(Keys.SHIFT).send_keys('v').key_up(Keys.SHIFT).perform()
也不行。
然后搜到可以用win32库,从下面链接下载对应的版本:
https://sourceforge.net/projects/pywin32/files/pywin32/
安装pywin32的时候出现下面的问题:
Python version 2.7 required, which was not found in the registry
在注册表中没有找到python 2.7
解决方案:建立一个文件 register.py 内容如下. 然后执行该脚本。
import sys
from _winreg import *
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
installpath, installpath, installpath
)
def RegisterPy():
try:
reg = OpenKey(HKEY_CURRENT_USER, regpath)
except EnvironmentError as e:
try:
reg = CreateKey(HKEY_CURRENT_USER, regpath)
SetValue(reg, installkey, REG_SZ, installpath)
SetValue(reg, pythonkey, REG_SZ, pythonpath)
CloseKey(reg)
except:
print "*** Unable to register!"
return
print "--- Python", version, "is now registered!"
return
if (QueryValue(reg, installkey) == installpath and
QueryValue(reg, pythonkey) == pythonpath):
CloseKey(reg)
print "=== Python", version, "is already registered!"
return
CloseKey(reg)
print "*** Unable to register!"
print "*** You probably have another Python installation!"
if __name__ == "__main__":
RegisterPy()
安装成功后,出现下面的问题
原来我想当然的以为我的python是64位的,下了64位的pywin32,结果不匹配。
后面重新下了个32位的pywin32,就ok了。
操作键盘代码如下:
对应的键码:
有关win32api的网站参考:
http://nullege.com/codes/search?cq=win32api
在使用selenium爬取网页图片的时候,想要点击鼠标右键,用键盘操作(Shift+‘v’)保存图片
#鼠标悬停在第一个图片上模拟鼠标右键点击保存 element = driver.find_element_by_css_selector("img.guess-image") ActionChains(driver).context_click(element).perform() time.sleep(3) #control+v 图片另存为 ActionChains(driver).send_keys(Keys.SHIFT, 'v').perform() time.sleep(2) #保存 ActionChains(driver).send_keys(Keys.ENTER).perform()
没有响应。
键盘操作改了好几遍:
ActionChain(driver).key_down(Keys.SHIFT).send_keys('v').key_up(Keys.SHIFT).perform()
也不行。
然后搜到可以用win32库,从下面链接下载对应的版本:
https://sourceforge.net/projects/pywin32/files/pywin32/
安装pywin32的时候出现下面的问题:
Python version 2.7 required, which was not found in the registry
在注册表中没有找到python 2.7
解决方案:建立一个文件 register.py 内容如下. 然后执行该脚本。
import sys
from _winreg import *
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
installpath, installpath, installpath
)
def RegisterPy():
try:
reg = OpenKey(HKEY_CURRENT_USER, regpath)
except EnvironmentError as e:
try:
reg = CreateKey(HKEY_CURRENT_USER, regpath)
SetValue(reg, installkey, REG_SZ, installpath)
SetValue(reg, pythonkey, REG_SZ, pythonpath)
CloseKey(reg)
except:
print "*** Unable to register!"
return
print "--- Python", version, "is now registered!"
return
if (QueryValue(reg, installkey) == installpath and
QueryValue(reg, pythonkey) == pythonpath):
CloseKey(reg)
print "=== Python", version, "is already registered!"
return
CloseKey(reg)
print "*** Unable to register!"
print "*** You probably have another Python installation!"
if __name__ == "__main__":
RegisterPy()
安装成功后,出现下面的问题
原来我想当然的以为我的python是64位的,下了64位的pywin32,结果不匹配。
后面重新下了个32位的pywin32,就ok了。
操作键盘代码如下:
import win32api a5c0
#SHIFT+v
win32api.keybd_event(16, 0, 0, 0) win32api.keybd_event(86, 0, 0, 0)
#Enter按钮 win32api.keybd_event(13, 0, 0, 0)
对应的键码:
有关win32api的网站参考:
http://nullege.com/codes/search?cq=win32api
相关文章推荐
- selenium 问题:加了显性等待后,操作元素依然出错
- sqlite数据库下载安装和初步操作和所遇到的问题near "sqlite3":syntax error
- Selenium遇到的问题2 下载了chromedriver,并放在Path目录下,还是显示错误
- 关于 c# 操作 Excel文件中遇到的保存出错问题
- 遇到的selenium下拉框无法操作解决方法-键盘操作事件
- selenium 鼠标操作 键盘操作 上传文件 下载文件
- Selenium遇到的问题8 python利用xlwt模块操作xls数据显示IO错误(Python中正反斜杠的用法)
- Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解
- python + selenium webdriver 通过python来模拟鼠标、键盘操作,来解决SWFFileUpload调用系统底层弹出框无法定位问题
- sqlite数据库下载安装和初步操作和所遇到的问题
- Control Study -> 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
- 别的不多说先,先记下遇到的问题:如何在子线程中操作窗体上的控件
- OGRE缓冲鼠标键盘输入无法响应的问题
- C++STL中对vector进行erase删除元素操作中遇到的问题。
- 关于Cookie跨域操作遇到的问题及解决方法
- 使用动态分配和指针操作求 9 个 double 数的乘积(编译通过了,但是运行时出错,谁能帮我看看出了什么问题啊)[em08]
- PowerShell操作XML遇到的问题
- cocos2d-x总结(四)win32环境下响应键盘消息
- ASIHTTPRequest下载遇到过的问题。。
- Java操作Zip压缩文件遇到的编码问题