1. from selenium import webdriver
  2. #引入ActionChains类 提供了鼠标的操作方法
  3. from selenium.webdriver.common.action_chains import ActionChains
  4.  
  5. from selenium.webdriver.common.keys import Keys
  6. from ReadTxt_demo import readTxt
  7. import time
  8.  
  9. #鼠标键盘事件
  10. '''
  11. ActionChains 常用方法
  12.  
  13. perform() 执行所有ActionChains 中存储的行为;
  14. context_click() 右击;
  15. double_click() 双击;
  16. drag_and_drop() 拖动;
  17. move_to_element() 鼠标悬停。
  18.  
  19. '''
  20.  
  21. driver = webdriver.Firefox()
  22.  
  23. driver.maximize_window()
  24. #打开百度网盘
  25. driver.get("https://pan.baidu.com")
  26.  
  27. #点击 “帐号密码登录”
  28. driver.find_element_by_xpath(".//*[@id='login-middle']/div/div[6]/div[2]/a").click()
  29. # 引入读取文件模块获取用户名密码
  30. # from ReadTxt_demo import readTxt
  31. filePath = 'userInfo.txt'
  32. re_name, re_pwd = readTxt(filePath)
  33. #清空输入框,防止追加输入
  34. driver.find_element_by_name("userName").clear()
  35. username = driver.find_element_by_name("userName")
  36. #输入用户名
  37. username.send_keys(re_name)
  38. #通过键盘敲击tab ,切换到下一个输入框。
  39. username.send_keys(Keys.TAB)
  40. time.sleep(2)
  41. password = driver.find_element_by_name("password")
  42. password.send_keys(re_pwd)
  43. password.send_keys(Keys.ENTER)
  44. time.sleep(3)
  45.  
  46. # 事实证明如果不加隐式等待implicitly_wait(5) 会出现:错误:Message: Unable to locate element:
  47. #所以 implicitly_wait(5) 比sleep 靠谱
  48. driver.implicitly_wait(5)
  49. #测试单击操作
  50. #driver.find_element_by_xpath(".//*[@id='h5Input0']").click()
  51.  
  52. #定位到元素,进行右击操作
  53. #通过 link_text 定位。
  54. right_click = driver.find_element_by_link_text('新建文件夹(1)')
  55. driver.implicitly_wait(5)
  56. #鼠标悬停
  57. ActionChains(driver).move_to_element(right_click).perform()
  58. time.sleep(10)
  59. #对定位到的元素执行右击操作
  60. ActionChains(driver).context_click(right_click).perform()
  61. #.//*[@id='layoutMain']/div[2]/div[3]/div/div/dd[1]/div[2]/div[1]
  62.  
  63. #鼠标拖动操作,
  64. #定义原位置、目标位置=right_click
  65. driver.implicitly_wait(5)
  66. file_source = driver.find_element_by_xpath(".//*[@id='layoutMain']/div[2]/div[3]/div/div/dd[1]/div[2]/div[1]")
  67. driver.implicitly_wait(5)
  68. ActionChains(driver).drag_and_drop(file_source,right_click).perform()
  69. driver.implicitly_wait(5)
  70.  
  71. #鼠标双击
  72. ActionChains(driver).double_click(right_click).perform()
  73. time.sleep(13)
  74. '''
  75. from selenium.webdriver.common.action_chains import ActionChains
  76. 导入提供鼠标操作的 ActionChains 类
  77. ActionChains(driver)
  78. 调用ActionChains()类,将浏览器驱动driver作为参数传入
  79. context_click(right_click)
  80. context_click()方法用户模拟鼠标右键操作,在调用时需要指定元素定位
  81. perform()
  82. 执行所有ActionChains中存储的行为,可以理解为对整个操作的提交动作。
  83.  
  84. '''
  1. #下面时 键盘操作
  1.  
  1.  
  2. driver.quit()
  3. #driver.close()
  1. from selenium import webdriver
  2. from selenium.webdriver.common.keys import Keys
  3. import time
  4.  
  5. '''
  6.  
  7. from selenium.webdriver.common.keys import Keys
  8. 在使用键盘按键方法前需要先导入 keys 类包。
  9. 下面经常使用到的键盘操作:
  10. send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
  11. send_keys(Keys.SPACE) 空格键(Space)
  12. send_keys(Keys.TAB) 制表键(Tab)
  13. send_keys(Keys.ESCAPE) 回退键(Esc)
  14. send_keys(Keys.ENTER) 回车键(Enter)
  15. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
  16. send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)博客园---虫师
  17. http://fnng.cnblogs.com 52
  18. send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
  19. send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
  20. Keys 类所提供的按键请查阅 webdriver API.
  21.  
  22. '''
  23.  
  24. driver = webdriver.Firefox()
  25. url = "http://www.hao123.com"
  26. driver.maximize_window()
  27. driver.get(url)
  28.  
  29. driver.implicitly_wait(3)
  30. driver.find_element_by_id('search-input').clear()
  31. driver.find_element_by_id('search-input').send_keys('seleniumm')
  32. driver.implicitly_wait(3)
  33. #回删
  34. driver.find_element_by_id('search-input').send_keys(Keys.BACK_SPACE)
  35. driver.implicitly_wait(3)
  36. #追加空格
  37. driver.find_element_by_id('search-input').send_keys(Keys.SPACE)
  38. driver.implicitly_wait(3)
  39. driver.find_element_by_id('search-input').send_keys('教程')
  40. driver.implicitly_wait(3)
  41. #全选内容
  42. driver.find_element_by_id('search-input').send_keys(Keys.CONTROL,'a')
  43. driver.implicitly_wait(3)
  44. #剪切内容
  45. driver.find_element_by_id('search-input').send_keys(Keys.CONTROL,'x')
  46. driver.implicitly_wait(3)
  47.  
  48. #粘贴内容
  49. driver.find_element_by_id('search-input').send_keys(Keys.CONTROL,'v')
  50. driver.implicitly_wait(3)
  51.  
  52. #回车代替 点击
  53. driver.find_element_by_id('search-input').send_keys(Keys.ENTER)
  54. driver.implicitly_wait(3)
  55.  
  56. time.sleep(10)
  57.  
  58. driver.quit()

Python - selenium_WebDriver 鼠标键盘事件的更多相关文章

  1. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

  2. Linux 模拟 鼠标 键盘 事件

    /************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...

  3. Tkinter 鼠标键盘事件(一)

    一: 鼠标事件 <Button-1>                                                                     鼠标左键单击 ...

  4. Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)

    一.写在前面 上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议收藏.转发! 二.元素的状态 在操作元素之前,我们需要了解元素的常见状态. 1.常见元素状态判断,傻傻 ...

  5. Tkinter 鼠标键盘事件(二)

    一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...

  6. 由chrome剪贴板问题研究到了js模拟鼠标键盘事件

    写在前面 最近公司在搞浏览器兼容的事情,所有浏览器兼容的问题不得不一个人包了.下面来说一下今天遇到的一个问题吧 大家都知道IE下面如果要获得剪贴板里面的信息的话,代码应该如下所示 window.cli ...

  7. c# 使用hook来监控鼠标键盘事件的示例代码

    如果这个程序在10几年前,QQ刚刚兴起的时候,有了这个代码,就可实现盗号了. 当然使用钩子我们更多的是实现"全局快捷键"的需求. 比如 程序最小化隐藏后要"某快捷键&qu ...

  8. openGL 初试 绘制三角形 和添加鼠标键盘事件

    code: #include <gl/glut.h> #include <stdlib.h> void render(void); void keyboard(unsigned ...

  9. python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为

    0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...

随机推荐

  1. 对于global的介绍

    抄自http://veniceweb.googlecode.com/svn/trunk/public/daily_tech_doc/erlang_global_20091109.txt 1. 介绍:这 ...

  2. Spring security 浅谈用户验证机制

    step1:首先ApplicationUserDetailsService需要实现UserDetailsService接口(在 org.springframework.security.core.us ...

  3. 【转】JMeter脚本的参数化

    JMeter脚本的参数化 当你利用Badboy将你的测试脚本录制完毕后,接下来就是脚本的调试工作了.在我看来,调试应该包括有以下几个方面:1.根据测试场景对脚本进行必要的修改:2.脚本参数化:3.添加 ...

  4. N个节点的二叉树有多少种形态(卡特兰数)

    N个节点的二叉树有多少种形态   这是一道阿里的面试题.其实算不上新鲜,但是我之前没关注过,如今碰到了,就顺便探讨下这个问题吧:) 拿到这个题,首先想到的是直接写出表达式肯定不行,所以有必要从递推入手 ...

  5. 1100 Mars Numbers

    题意:进制转换. 思路:注意当数字是13的倍数时,只需高位叫法的单词.比如26,是“hel”,而不是“hel tret”.我被坑在这里了!对应语句1的处理.另外,在输入n和n个字符串之间需要一个吸收字 ...

  6. Linux学习笔记 -- Shell 数组

    定义 在Shell的世界里,我们只能定义一维数组. 定义数组的时候不需要指定长度,数组的下标从0开始; Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: sh ...

  7. select,poll,epoll,selectors

    一 了解select,poll,epoll IO复用:为了解释这个名词,首先来理解下复用这个概念,复用也就是共用的意思,这样理解还是有些抽象, 为此,咱们来理解下复用在通信领域的使用,在通信领域中为了 ...

  8. spring-cloud配置高可用eureka服务端

    spring-cloud配置eureka服务端 eureka用来发现其他程序 依赖 <?xml version="1.0" encoding="UTF-8" ...

  9. java堆栈区别(个人理解)

    java把内存分为2种,一种是堆内存,一种是栈内存. 堆内存:通过new关键字出来的对象放在堆内存中,堆内存可以动态的分配内存大小,垃圾回收器自动回收不再使用的数据,由于动态分配内存所以存取的速度较慢 ...

  10. Objective-C 的 self 和 super 详解 (用简单程序说明问题)

    在 Objective-C 中的类实现中经常看到这两个关键字 "self" 和 "super",以以前 oop 语言的经验,拿 c++ 为例,self 相当于 ...