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()