Selenium模拟用户的键盘鼠标操作

 

 

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

from selenium import webdriver
 # 要想调用键盘按键操作需要引入keys包
from selenium.webdriver.common.keys import Keys
 #创建浏览器对象
driver = webdriver.Firefox()

driver.get("http://www.baidu.com") 
#打印页面标题“百度一下你就知道”
print driver.title
 #生成当前页面快照
driver.save_screenshot("baidu.png") 
# id="kw"是百度搜索框,输入字符串“微博”,跳转到搜索中国页面
driver.find_element_by_id("kw").send_keys(u"微博") 
# id="su"是百度搜索按钮,click() 是模拟点击
driver.find_element_by_id("su").click() 
# 获取新的页面快照
driver.save_screenshot(u"微博.png") 
# 打印网页渲染后的源代码
print driver.page_source 
# 获取当前页面Cookie
print driver.get_cookies() 
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') 
# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') 
# 输入框重新输入内容
driver.find_element_by_id("kw").send_keys("test") 
# 模拟Enter回车键
driver.find_element_by_id("su").send_keys(Keys.RETURN) 
# 清除输入框内容
driver.find_element_by_id("kw").clear() 
# 生成新的页面快照
driver.save_screenshot("test.png") 
# 获取当前url
print driver.current_url 
# 关闭当前页面,如果只有一个页面,会关闭浏览器 # driver.close()

# 关闭浏览器
driver.quit()

1、页面操作寻找方法

如下面一标签

<input type="text" name="user-name" id="passwd-id" />
# 获取id标签值
element = driver.find_element_by_id("passwd-id")
# 获取name标签值
element = driver.find_element_by_name("user-name")
# 获取标签名值
element = driver.find_elements_by_tag_name("input")
# 也可以通过XPath来匹配
element = driver.find_element_by_xpath("//input[@id='passwd-id']")

2、元素定位方法

find_element_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

3、鼠标动作

from selenium import webdriver 
# 要想调用键盘按键操作需要引入keys包
from selenium.webdriver.common.keys import Keys from selenium.webdriver import ActionChains 
#创建浏览器对象
driver = webdriver.Firefox()

driver.get("http://www.baidu.com") 
#鼠标移动到某处
action1 = driver.find_element_by_id("su")
ActionChains(driver).move_to_element(action1).perform()
#鼠标移动到某处单击
action2 = driver.find_element_by_id("su")
ActionChains(driver).move_to_element(action2).click(action2).perform() #鼠标移动到某处双击
action3 = driver.find_element_by_id("su")
ActionChains(driver).move_to_element(action3).double_click(action3).perform() # 鼠标移动到某处右击
action4 = driver.find_element_by_id("su")
ActionChains(driver).move_to_element(action4).context_click(action4).perform()

鼠标常用方法:

  • perform():执行所有 ActionChains 中存储的行为。
  • context_click():右击
  • double_click():双击
  • drag_and_drop():拖到
  • move_to_element():鼠标悬停

.鼠标右击

context_click():#右击

# 定位到要右击的元素
right_click  = browser.find_element_by_id("xx")

# 对定位到的元素执行右击操作
ActionChains(browser).move_to_element(right_click ).perform()

鼠标双击

double_click():#双击

# 定位到要右击的元素
double_click = browser.find_element_by_id('xx')

# 对定位到的元素执行鼠标右键操作
ActionChains(browser).context_click(double_click).perform()

鼠标拖动

drag_and_drop(source,target):#拖动
source:#开始位置;需要拖动的元素
target:#结束位置;拖到后需要放置的目的地元素



# 开始位置:定位到元素的原位置
source = driver.find_element_by_id("xx")

# 结束位置:定位到元素要移动到的目标位置
target = driver.find_element_by_id("xx")

# 执行元素的拖放操作
ActionChains(driver).drag_and_drop(source,target).perform()

鼠标悬停

move_to_element():#鼠标悬停

# 定位到要悬停的元素
move = driver.find_element_by_id("xx")

# 对定位到的元素执行悬停操作
ActionChains(driver).move_to_element(move).perform()

Select表单

遇到下来框需要选择操作时,Selenium专门提供了Select类来处理下拉框

# 导入 Select 类
from selenium.webdriver.support.ui import Select 
# 找到 name 的选项卡
select = Select(driver.find_element_by_name('status')) 
# 
select.select_by_index(1)
select.select_by_value("0")
select.select_by_visible_text(u"xxx")

注意:

  1. index 索引从 0 开始
  2. value是option标签的一个属性值,并不是显示在下拉框中的值
  3. visible_text是在option标签文本的值,是显示在下拉框的值

全部取消方法

select.deselect_all()

 

5.弹窗处理

当页面出现了弹窗提示

alert = driver.switch_to_alert()

6.页面切换

一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。切换窗口的方法如下:
driver.switch_to.window("this is window name")

 

7.键盘动作

Keys类提供了几乎键盘上的所有按键的方法,在前面的博文中有了解到,send_keys()可以用来模拟键盘输入的操作,除此之外,我们还可以用Keys来模拟键盘上的按键,或者组合键,如Ctrl + CCtrl + V等等。

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get("https://www.baidu.com/")


#模拟键盘输入“python”:
driver.find_element_by_id("kw").send_keys("python.")

#删除最后一个字符:
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

#模拟键盘输入一个空格:
driver.find_element_by_id("kw").send_keys(Keys.SPACE)

#模拟键盘输入“教程”:
driver.find_element_by_id("kw").send_keys("教程")

#输入框全选:
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")

#剪切:
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"x")

#粘贴:
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")

#回车:
driver.find_element_by_id("kw").send_keys(Keys.ENTER)

下面介绍几个常用的键盘操作:

  1. Keys.BACK_SPACE:删除键
  2. Keys.SPACE:空格键
  3. Keys.TAB:Tab键
  4. Keys.ESCAPE:回退键
  5. Keys.ENTER:回车键
  6. Keys.CONTROL,”a”:组合键,Ctrl + A
  7. Keys.CONTROL,”x”:组合键,Ctrl + X
  8. Keys.CONTROL,”v”:组合键,Ctrl + V
  9. Keys.CONTROL,”c”:组合键,Ctrl + C
  10. Keys.F1:F1键
  11. Keys.F12:F12键