九、鍵盤事件
本章重點:
?
鍵盤按鍵用法
?
鍵盤組合鍵用法
?
send_keys() 輸入中文亂碼問題
9.1、鍵盤按鍵用法
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#需要引入 keys 包
import os,time
driver = webdriver.Firefox()
driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud
.kuaibo.com%2F")
博客園—蟲師
http://fnng.cnblogs.com
24
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)
driver.quit()
要想調用鍵盤按鍵操作需要引入 keys 包:
from selenium.webdriver.common.keys import Keys
通過 send_keys()調用按鍵:
send_keys(Keys.TAB)
# TAB
send_keys(Keys.ENTER)
# 回車
注意:這個操作和頁面元素的遍歷順序有關,假如當前定位在賬號輸入框,按鍵
盤的 tab 鍵后遍歷的不是密碼框,那就不法輸入密碼。 假如輸入密碼后,還有
需要填寫驗證碼,那么回車也起不到登陸的效果。
9.2、鍵盤組合鍵用法
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
博客園—蟲師
http://fnng.cnblogs.com
25
#輸入框輸入內容
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()
上面的操作沒有實際意義,但向我們演示了鍵盤組合按鍵的用法。
9.3、中文亂碼問題
selenium2 python 在 send_keys()中輸入中文一直報錯,其實前面加個小 u 就解決了:
coding=utf-8
send_keys(u"輸入中文")
需要注意的是 utf-8并不是萬能的,我們需要保持腳本、瀏覽器、程序三者編碼之
間的轉換;如果 utf-8不能解決,可以嘗試 GBK 或修改瀏覽器的默認編碼。