您的位置:首页 > 其它

Selenium遇到的问题5 键盘操作无响应,下载win32出错

2017-09-22 11:19 253 查看
Selenium遇到的问题5 键盘操作无响应,下载win32出错

在使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐