Python - selenium_WebDriver 鼠标键盘事件
- from selenium import webdriver
- #引入ActionChains类 提供了鼠标的操作方法
- from selenium.webdriver.common.action_chains import ActionChains
- from selenium.webdriver.common.keys import Keys
- from ReadTxt_demo import readTxt
- import time
- #鼠标键盘事件
- '''
- ActionChains 常用方法
- perform() 执行所有ActionChains 中存储的行为;
- context_click() 右击;
- double_click() 双击;
- drag_and_drop() 拖动;
- move_to_element() 鼠标悬停。
- '''
- driver = webdriver.Firefox()
- driver.maximize_window()
- #打开百度网盘
- driver.get("https://pan.baidu.com")
- #点击 “帐号密码登录”
- driver.find_element_by_xpath(".//*[@id='login-middle']/div/div[6]/div[2]/a").click()
- # 引入读取文件模块获取用户名密码
- # from ReadTxt_demo import readTxt
- filePath = 'userInfo.txt'
- re_name, re_pwd = readTxt(filePath)
- #清空输入框,防止追加输入
- driver.find_element_by_name("userName").clear()
- username = driver.find_element_by_name("userName")
- #输入用户名
- username.send_keys(re_name)
- #通过键盘敲击tab ,切换到下一个输入框。
- username.send_keys(Keys.TAB)
- time.sleep(2)
- password = driver.find_element_by_name("password")
- password.send_keys(re_pwd)
- password.send_keys(Keys.ENTER)
- time.sleep(3)
- # 事实证明如果不加隐式等待implicitly_wait(5) 会出现:错误:Message: Unable to locate element:
- #所以 implicitly_wait(5) 比sleep 靠谱
- driver.implicitly_wait(5)
- #测试单击操作
- #driver.find_element_by_xpath(".//*[@id='h5Input0']").click()
- #定位到元素,进行右击操作
- #通过 link_text 定位。
- right_click = driver.find_element_by_link_text('新建文件夹(1)')
- driver.implicitly_wait(5)
- #鼠标悬停
- ActionChains(driver).move_to_element(right_click).perform()
- time.sleep(10)
- #对定位到的元素执行右击操作
- ActionChains(driver).context_click(right_click).perform()
- #.//*[@id='layoutMain']/div[2]/div[3]/div/div/dd[1]/div[2]/div[1]
- #鼠标拖动操作,
- #定义原位置、目标位置=right_click
- driver.implicitly_wait(5)
- file_source = driver.find_element_by_xpath(".//*[@id='layoutMain']/div[2]/div[3]/div/div/dd[1]/div[2]/div[1]")
- driver.implicitly_wait(5)
- ActionChains(driver).drag_and_drop(file_source,right_click).perform()
- driver.implicitly_wait(5)
- #鼠标双击
- ActionChains(driver).double_click(right_click).perform()
- time.sleep(13)
- '''
- from selenium.webdriver.common.action_chains import ActionChains
- 导入提供鼠标操作的 ActionChains 类
- ActionChains(driver)
- 调用ActionChains()类,将浏览器驱动driver作为参数传入
- context_click(right_click)
- context_click()方法用户模拟鼠标右键操作,在调用时需要指定元素定位
- perform()
- 执行所有ActionChains中存储的行为,可以理解为对整个操作的提交动作。
- '''
- #下面时 键盘操作
- driver.quit()
- #driver.close()
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- import time
- '''
- from selenium.webdriver.common.keys import Keys
- 在使用键盘按键方法前需要先导入 keys 类包。
- 下面经常使用到的键盘操作:
- send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
- send_keys(Keys.SPACE) 空格键(Space)
- send_keys(Keys.TAB) 制表键(Tab)
- send_keys(Keys.ESCAPE) 回退键(Esc)
- send_keys(Keys.ENTER) 回车键(Enter)
- send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
- send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)博客园---虫师
- http://fnng.cnblogs.com 52
- send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
- send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
- Keys 类所提供的按键请查阅 webdriver API.
- '''
- driver = webdriver.Firefox()
- url = "http://www.hao123.com"
- driver.maximize_window()
- driver.get(url)
- driver.implicitly_wait(3)
- driver.find_element_by_id('search-input').clear()
- driver.find_element_by_id('search-input').send_keys('seleniumm')
- driver.implicitly_wait(3)
- #回删
- driver.find_element_by_id('search-input').send_keys(Keys.BACK_SPACE)
- driver.implicitly_wait(3)
- #追加空格
- driver.find_element_by_id('search-input').send_keys(Keys.SPACE)
- driver.implicitly_wait(3)
- driver.find_element_by_id('search-input').send_keys('教程')
- driver.implicitly_wait(3)
- #全选内容
- driver.find_element_by_id('search-input').send_keys(Keys.CONTROL,'a')
- driver.implicitly_wait(3)
- #剪切内容
- driver.find_element_by_id('search-input').send_keys(Keys.CONTROL,'x')
- driver.implicitly_wait(3)
- #粘贴内容
- driver.find_element_by_id('search-input').send_keys(Keys.CONTROL,'v')
- driver.implicitly_wait(3)
- #回车代替 点击
- driver.find_element_by_id('search-input').send_keys(Keys.ENTER)
- driver.implicitly_wait(3)
- time.sleep(10)
- driver.quit()
Python - selenium_WebDriver 鼠标键盘事件的更多相关文章
- Python——pyHook监听鼠标键盘事件
pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...
- Linux 模拟 鼠标 键盘 事件
/************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...
- Tkinter 鼠标键盘事件(一)
一: 鼠标事件 <Button-1> 鼠标左键单击 ...
- Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)
一.写在前面 上篇文章介绍的是关于浏览器的常见操作,接下来,我们将继续分享关于元素的常见操作,建议收藏.转发! 二.元素的状态 在操作元素之前,我们需要了解元素的常见状态. 1.常见元素状态判断,傻傻 ...
- Tkinter 鼠标键盘事件(二)
一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑 ...
- 由chrome剪贴板问题研究到了js模拟鼠标键盘事件
写在前面 最近公司在搞浏览器兼容的事情,所有浏览器兼容的问题不得不一个人包了.下面来说一下今天遇到的一个问题吧 大家都知道IE下面如果要获得剪贴板里面的信息的话,代码应该如下所示 window.cli ...
- c# 使用hook来监控鼠标键盘事件的示例代码
如果这个程序在10几年前,QQ刚刚兴起的时候,有了这个代码,就可实现盗号了. 当然使用钩子我们更多的是实现"全局快捷键"的需求. 比如 程序最小化隐藏后要"某快捷键&qu ...
- openGL 初试 绘制三角形 和添加鼠标键盘事件
code: #include <gl/glut.h> #include <stdlib.h> void render(void); void keyboard(unsigned ...
- python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为
0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...
随机推荐
- 对于global的介绍
抄自http://veniceweb.googlecode.com/svn/trunk/public/daily_tech_doc/erlang_global_20091109.txt 1. 介绍:这 ...
- Spring security 浅谈用户验证机制
step1:首先ApplicationUserDetailsService需要实现UserDetailsService接口(在 org.springframework.security.core.us ...
- 【转】JMeter脚本的参数化
JMeter脚本的参数化 当你利用Badboy将你的测试脚本录制完毕后,接下来就是脚本的调试工作了.在我看来,调试应该包括有以下几个方面:1.根据测试场景对脚本进行必要的修改:2.脚本参数化:3.添加 ...
- N个节点的二叉树有多少种形态(卡特兰数)
N个节点的二叉树有多少种形态 这是一道阿里的面试题.其实算不上新鲜,但是我之前没关注过,如今碰到了,就顺便探讨下这个问题吧:) 拿到这个题,首先想到的是直接写出表达式肯定不行,所以有必要从递推入手 ...
- 1100 Mars Numbers
题意:进制转换. 思路:注意当数字是13的倍数时,只需高位叫法的单词.比如26,是“hel”,而不是“hel tret”.我被坑在这里了!对应语句1的处理.另外,在输入n和n个字符串之间需要一个吸收字 ...
- Linux学习笔记 -- Shell 数组
定义 在Shell的世界里,我们只能定义一维数组. 定义数组的时候不需要指定长度,数组的下标从0开始; Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: sh ...
- select,poll,epoll,selectors
一 了解select,poll,epoll IO复用:为了解释这个名词,首先来理解下复用这个概念,复用也就是共用的意思,这样理解还是有些抽象, 为此,咱们来理解下复用在通信领域的使用,在通信领域中为了 ...
- spring-cloud配置高可用eureka服务端
spring-cloud配置eureka服务端 eureka用来发现其他程序 依赖 <?xml version="1.0" encoding="UTF-8" ...
- java堆栈区别(个人理解)
java把内存分为2种,一种是堆内存,一种是栈内存. 堆内存:通过new关键字出来的对象放在堆内存中,堆内存可以动态的分配内存大小,垃圾回收器自动回收不再使用的数据,由于动态分配内存所以存取的速度较慢 ...
- Objective-C 的 self 和 super 详解 (用简单程序说明问题)
在 Objective-C 中的类实现中经常看到这两个关键字 "self" 和 "super",以以前 oop 语言的经验,拿 c++ 为例,self 相当于 ...