轻松自动化---selenium-webdriver(python) (十二)--转自虫师
来源:互联网 发布:c语言实验交换字母 编辑:程序博客网 时间:2024/05/01 04:36
本节重点:
- l 键盘按键用法
- l 键盘组合键用法
- l send_keys() 输入中文运行报错问题
键盘按键键用法:
#coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keys #需要引入keys包import os,timedriver = webdriver.Firefox()driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F")time.sleep(3)driver.maximize_window() # 浏览器全屏显示driver.find_element_by_id("user_name").clear()driver.find_element_by_id("user_name").send_keys("fnngj")#tab的定位相相于清除了密码框的默认提示信息,等同上面的clear()driver.find_element_by_id("user_name").send_keys(Keys.TAB)time.sleep(3)driver.find_element_by_id("user_pwd").send_keys("123456")#通过定位密码框,enter(回车)来代替登陆按钮driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER)'''#也可定位登陆按钮,通过enter(回车)代替click()driver.find_element_by_id("login").send_keys(Keys.ENTER)'''time.sleep(3)time.sleep(3)driver.quit()
要想调用键盘按键操作需要引入keys包:
from selenium.webdriver.common.keys import Keys
通过send_keys()调用按键:
send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车
注意:这个操作和页面元素的遍历顺序有关,假如当前定位在账号输入框,按键盘的tab键后遍历的不是密码框,那就不法输入密码。 假如输入密码后,还有需要填写验证码,那么回车也起不到登陆的效果。
这并不是一种好的方法,这里只是为了验证单个按键的用法
键盘组合键用法:
#coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport os,timedriver = webdriver.Firefox()driver.get("http://www.baidu.com")#输入框输入内容driver.find_element_by_id("kw").send_keys("selenium")time.sleep(3)#ctrl+a 全选输入框内容driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')time.sleep(3)#ctrl+x 剪切输入框内容driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')time.sleep(3)#输入框重新输入内容,搜索driver.find_element_by_id("kw").send_keys(u"虫师 cnblogs")driver.find_element_by_id("su").click()time.sleep(3)driver.quit()
上面的操作没有实际意义,但向我们演示了键盘组合按键的用法。
输入中文问题
顺便解决了一个困扰我到现的一个输入中文件的问题。selenium2 python在send_keys()中输入中文一直报错,其实前面加个小u 就解决了:
send_keys(u"输入中文")
基本上键盘上所有的按键都可以模拟
module:selenium.webdriver.common.keys• class Keys()– NULL = u’ue000’– CANCEL = u’ue001’ # ^break– HELP = u’ue002’– BACK_SPACE = u’ue003’– TAB = u’ue004’– CLEAR = u’ue005’– RETURN = u’ue006’– ENTER = u’ue007’– SHIFT = u’ue008’– LEFT_SHIFT = u’ue008’ # alias– CONTROL = u’ue009’– LEFT_CONTROL = u’ue009’ # alias– ALT = u’ue00a’– LEFT_ALT = u’ue00a’ # alias– PAUSE = u’ue00b’– ESCAPE = u’ue00c’– SPACE = u’ue00d’– PAGE_UP = u’ue00e’– PAGE_DOWN = u’ue00f’– END = u’ue010’– HOME = u’ue011’– LEFT = u’ue012’– ARROW_LEFT = u’ue012’ # alias– UP = u’ue013’– ARROW_UP = u’ue013’ # alias– RIGHT = u’ue014’– ARROW_RIGHT = u’ue014’ # alias– DOWN = u’ue015’– ARROW_DOWN = u’ue015’ # alias– INSERT = u’ue016’– DELETE = u’ue017’– SEMICOLON = u’ue018’– EQUALS = u’ue019’– NUMPAD0 = u’ue01a’ # numbe pad keys– NUMPAD1 = u’ue01b’– NUMPAD2 = u’ue01c’– NUMPAD3 = u’ue01d’– NUMPAD4 = u’ue01e’– NUMPAD5 = u’ue01f’– NUMPAD6 = u’ue020’– NUMPAD7 = u’ue021’– NUMPAD8 = u’ue022’– NUMPAD9 = u’ue023’– MULTIPLY = u’ue024’– ADD = u’ue025’– SEPARATOR = u’ue026’– SUBTRACT = u’ue027’– DECIMAL = u’ue028’– DIVIDE = u’ue029’– F1 = u’ue031’ # function keys– F2 = u’ue032’– F3 = u’ue033’– F4 = u’ue034’– F5 = u’ue035’– F6 = u’ue036’– F7 = u’ue037’– F8 = u’ue038’– F9 = u’ue039’– F10 = u’ue03a’– F11 = u’ue03b’– F12 = u’ue03c’– META = u’ue03d’– COMMAND = u’ue03d’
0 0
- 轻松自动化---selenium-webdriver(python) (十二)--转自虫师
- 轻松自动化---selenium-webdriver(python) (十二)
- 轻松自动化---selenium-webdriver(python) (一)
- 轻松自动化---selenium-webdriver(python) (二)
- 轻松自动化---selenium-webdriver(python) (一)
- 轻松自动化---selenium-webdriver(python) (二)
- 轻松自动化---selenium-webdriver(python) (三)
- 轻松自动化---selenium-webdriver(python) (五)
- 轻松自动化---selenium-webdriver(python) (六)
- 轻松自动化---selenium-webdriver(python) (七)
- 轻松自动化---selenium-webdriver(python) (八)
- 轻松自动化---selenium-webdriver(python) (十)
- 轻松自动化---selenium-webdriver(python) (十一)
- 轻松自动化---selenium-webdriver(python) (三)
- 轻松自动化---selenium-webdriver(python) (一)
- 轻松自动化---selenium-webdriver(python) (一)
- 轻松自动化---selenium-webdriver(python) (一)
- 轻松自动化---selenium-webdriver(python) (二)
- 自定义指令2
- 颜色列表(中英文名称,RGB HSV CMYK值)
- [Object
- c++自定义队列
- 设置欢迎界面设置
- 轻松自动化---selenium-webdriver(python) (十二)--转自虫师
- Java代码编译和执行的整个过程
- SpringMVC 使用@ResponseBody返回json 中文乱码
- docker distritubion源码分析之二:storage driver详解(基于2.6.0版本)
- 前端培训班出身——吐槽下16年的艰辛
- 信号傅立叶变换后实际频谱图(Matlab)
- Javascript 中的神器——Promise
- (转)jQuery height()、innerHeight()、outerHeight()函数的区别详解
- 随机梯度下降算法学习心得