转自:http://www.cnblogs.com/fnng/p/3258946.html

本节重点:

  • l 键盘按键用法
  • l 键盘组合键用法
  • l send_keys() 输入中文运行报错问题

键盘按键键用法:

  1. #coding=utf-8
  2. from selenium import webdriver
  3. from selenium.webdriver.common.keys import Keys #需要引入keys包
  4. import os,time
  5.  
  6. driver = webdriver.Firefox()
  7. driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F")
  8.  
  9. time.sleep(3)
  10. driver.maximize_window() # 浏览器全屏显示
  11.  
  12. driver.find_element_by_id("user_name").clear()
  13. driver.find_element_by_id("user_name").send_keys("fnngj")
  14.  
  15. #tab的定位相相于清除了密码框的默认提示信息,等同上面的clear()
  16. driver.find_element_by_id("user_name").send_keys(Keys.TAB)
  17. time.sleep(3)
  18. driver.find_element_by_id("user_pwd").send_keys("123456")
  19.  
  20. #通过定位密码框,enter(回车)来代替登陆按钮
  21. driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER)
  22. '''
  23. #也可定位登陆按钮,通过enter(回车)代替click()
  24. driver.find_element_by_id("login").send_keys(Keys.ENTER)
  25. '''
  26. time.sleep(3)
  27.  
  28. time.sleep(3)
  29. driver.quit()

要想调用键盘按键操作需要引入keys包:

from selenium.webdriver.common.keys import Keys

通过send_keys()调用按键:

send_keys(Keys.TAB)        # TAB

send_keys(Keys.ENTER)    # 回车

注意:这个操作和页面元素的遍历顺序有关,假如当前定位在账号输入框,按键盘的tab键后遍历的不是密码框,那就不法输入密码。 假如输入密码后,还有需要填写验证码,那么回车也起不到登陆的效果。

这并不是一种好的方法,这里只是为了验证单个按键的用法

键盘组合键用法:

  1. #coding=utf-8
  2. from selenium import webdriver
  3. from selenium.webdriver.common.keys import Keys
  4. import os,time
  5.  
  6. driver = webdriver.Firefox()
  7.  
  8. driver.get("http://www.baidu.com")
  9.  
  10. #输入框输入内容
  11. driver.find_element_by_id("kw").send_keys("selenium")
  12. time.sleep(3)
  13.  
  14. #ctrl+a 全选输入框内容
  15. driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
  16. time.sleep(3)
  17.  
  18. #ctrl+x 剪切输入框内容
  19. driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
  20. time.sleep(3)
  21.  
  22. #输入框重新输入内容,搜索
  23. driver.find_element_by_id("kw").send_keys(u"虫师 cnblogs")
  24. driver.find_element_by_id("su").click()
  25.  
  26. time.sleep(3)
  27. driver.quit()

上面的操作没有实际意义,但向我们演示了键盘组合按键的用法。

输入中文问题

顺便解决了一个困扰我到现的一个输入中文件的问题。selenium2 python在send_keys()中输入中文一直报错,其实前面加个小u 就解决了:

send_keys(u"输入中文")

基本上键盘上所有的按键都可以模拟

  1. module:selenium.webdriver.common.keys
  2. class Keys()
  3. NULL = uue000
  4. CANCEL = uue001 # ^break
  5. HELP = uue002
  6. BACK_SPACE = uue003
  7. TAB = uue004
  8. CLEAR = uue005
  9. RETURN = uue006
  10. ENTER = uue007
  11. SHIFT = uue008
  12. LEFT_SHIFT = uue008 # alias
  13. CONTROL = uue009
  14. LEFT_CONTROL = uue009 # alias
  15. ALT = uue00a
  16. LEFT_ALT = uue00a # alias
  17. PAUSE = uue00b
  18. ESCAPE = uue00c
  19. SPACE = uue00d
  20. PAGE_UP = uue00e
  21. PAGE_DOWN = uue00f
  22. END = uue010
  23. HOME = uue011
  24. LEFT = uue012
  25. ARROW_LEFT = uue012 # alias
  26. UP = uue013
  27. ARROW_UP = uue013 # alias
  28. RIGHT = uue014
  29. ARROW_RIGHT = uue014 # alias
  30. DOWN = uue015
  31. ARROW_DOWN = uue015 # alias
  32. INSERT = uue016
  33. DELETE = uue017
  34. SEMICOLON = uue018
  35. EQUALS = uue019
  36. NUMPAD0 = uue01a # numbe pad keys
  37. NUMPAD1 = uue01b
  38. NUMPAD2 = uue01c
  39. NUMPAD3 = uue01d
  40. NUMPAD4 = uue01e
  41. NUMPAD5 = uue01f
  42. NUMPAD6 = uue020
  43. NUMPAD7 = uue021
  44. NUMPAD8 = uue022
  45. NUMPAD9 = uue023
  46. MULTIPLY = uue024
  47. ADD = uue025
  48. SEPARATOR = uue026
  49. SUBTRACT = uue027
  50. DECIMAL = uue028
  51. DIVIDE = uue029
  52. F1 = uue031 # function keys
  53. F2 = uue032
  54. F3 = uue033
  55. F4 = uue034
  56. F5 = uue035
  57. F6 = uue036
  58. F7 = uue037
  59. F8 = uue038
  60. F9 = uue039
  61. F10 = uue03a
  62. F11 = uue03b
  63. F12 = uue03c
  64. META = uue03d
  65. COMMAND = uue03d

python selenium ---键盘事件的更多相关文章

  1. 10 Python+Selenium键盘事件

    [环境信息] python3.6+selenium3.0.2+Firefox50.0+win7 [操作方法] 导入方法:from selenium.webdriver.common.keys impo ...

  2. selenium:2.selenium 键盘事件模拟

    今晚不想加班,于是赶紧回来看看书,不知道今天怎么就突然特别想玩文明五,但是又要克制自己咯,所以还是看看书吧,干的事情有: 1.下了selenium的小工具:FireBug/FirePath. 2.确定 ...

  3. python selenium --鼠标事件

    转自:http://www.cnblogs.com/fnng/p/3288444.html 本节重点: ActionChains 类 context_click()  右击 double_click( ...

  4. python + selenium相关事件和元素定位

    女友由于工作上的失误,将公司RDM中的某一字段的2000条数据给删除了.....就算是重新添加字段,但是与其他数据的关联性已经不在了.由于每天的数据修改量大,有关部门不愿意恢复数据库,因此只能一条条的 ...

  5. 9 Python+Selenium鼠标事件

    [环境信息] python3.6+Selenium3.0.2+Firefox50.0+win7 [ActionChains类鼠标事件的常用方法] 1.右击:context_click() 2.双击:d ...

  6. Python+Selenium - 键盘操作

    导包代码: from selenium.webdriver.common.keys import Keys 用法: driver.find_element("id","k ...

  7. python+selenium 鼠标事件操作

    一.前言 除了可以使用 click( ) 来模拟鼠标的单击操作,现在Web产品中还提供了更丰富的鼠标交互方式,例如鼠标右键.双击.悬停.拖动等功能,在WebDriver中,将这些关于鼠标操作的方法都封 ...

  8. selenium 键盘事件 模拟ctrl+v 然后键盘点击回车键

    #windows下执行 import win32api,win32con,win32clipboard as w #获取剪切板内容 def get_text(): w.OpenClipboard() ...

  9. python 采坑总结 调用键盘事件后导致键盘失灵的可能原因

    在练习python封装键盘事件的时候,实现一个keyDown和keyUp的功能: @staticmethod    def keyDown(keyName):        #按下按键        ...

随机推荐

  1. [JZOJ5426]摘Galo

    题目大意: 有一棵n个结点的树,每个点都有一个权值,你要从中选出不超过k+1个点使得权值和尽量大. 同时要注意如果一个点被选择,那么它的子树和这个点到根结点路径上的点不能被选择. 思路: 很水的树形D ...

  2. nginx负载均衡upstream参数配置

    一定要注意两台机器能够telnet 访问通过  如果不能通过则两台机器都执行一下 iptables -F 机器A: php-fpm配置[www]user = wwwgroup = wwwlisten ...

  3. Manthan, Codefest 16 A. Ebony and Ivory 水题

    A. Ebony and Ivory 题目连接: http://www.codeforces.com/contest/633/problem/A Description Dante is engage ...

  4. 每天一个linux命令21之ln: linux 下的软链和硬链

    首先理解一下一下inode:Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件. 表面上,用户通过文件名,打开文件.实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应 ...

  5. Win32 error code message

    http://fit.c2.com/fit/files/LispPlatform/lisp/clisp-2.28/src/errwin32.d # Calls a function, passing ...

  6. ylbtech-LanguageSamples-Versioning(版本控制)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Versioning(版本控制) 1.A,示例(Sample) 返回顶部 “版本控制”示 ...

  7. [转]SSIS ConnectionManager.ConnectionString Property

    本文转自:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.connectionmanager.conne ...

  8. iOS: 状态栏、导航栏、标签栏、工具栏

    三种项目栏总结: 工具栏:UIToolBar 导航栏:UINavigationBar 标签栏:UITabBar   UIToolBar的按钮单元为:UIBarButtonItem UINavigati ...

  9. HDU1505(HDU1506的加强版)

    昨天打 CF又跪了.近期睡不好睡不好睡不好-感觉整个人都累傻了,根本无办法写下去,只写了一题签到题就跪了orz..从未试过这么悲剧. 今天早上凭着我的意念("怨念").七点又起来了 ...

  10. es安装脚本

    #!/bin/bash file_name="/sdzw/es5/conf/es.config" #安装目录 install_dir="/es5/esinstall&qu ...