首页 > 代码库 > (四)WebDriver API:控制浏览器及鼠标、键盘事件

(四)WebDriver API:控制浏览器及鼠标、键盘事件

参考文档:WebDriver官方文档,下载链接:http://download.csdn.net/detail/kwgkwg001/4004500

虫师:《selenium2自动化测试实战-基于python语言》

 

一、控制浏览器

webdriver主要提供操作页面上各种元素的方法,但它也提供操作浏览器的一些方法,例如控制浏览器大小、前进和后退等。

1、控制浏览器窗口大小

webdriver提供了set_window_size()方法来设置浏览器大小:

# 控制浏览器大小

from selenium import webdriver

driver = webdriver.chrome("安装工具\python\chromedriver.exe")

driver.get("http://www.baidu.com")

# 参数数字为像素点

print("设置浏览器宽480、高800显示")

driver.set_window_size(480,800)

2、全屏显示

webdriver提供了maximize_window()方法使打开的浏览器全屏显示,其用法与set_window_size()相同。

3、控制浏览器前进、后退

现在的浏览器在浏览网页时都提供了前进和后退功能,webdriver也提供了对应的forward()和back()方法,来模拟前进和后退按钮:

# 控制浏览器前进、后退

from selenium import webdriver

driver = webdriver.chrome("安装工具\python\chromedriver.exe")

# 访问百度首页

first_url=‘http://www.baidu.com‘‘

print("now access %s "%(first_url))

driver.get(first_url)

# 访问新闻页面

second_url=‘http://news.baidu.com‘

print("now access % s "%(second_url)")

driver.get("second_url")

# 后退到百度首页

print("back to %s "%(first_url)")

driver.back()

# 前进到新闻页

print("forward to %s "%(second_url)")

driver.forward()

为了看清脚本执行过程,每一步的操作都通过print()打印当前的URL地址,执行结果如下:

now access http://www.baidu.com

now access http://news.baidu.com

back to http://www.baidu.com

froward to http://news.baidu.com

4、模拟浏览器前刷新

一般我们刷新页面都是通过F5或者页面上的刷新按钮,webdriver也提供了刷新方法refresh(),用来模拟页面刷新:

......

# 刷新当前页面

driver.refresh()

......

 

二、鼠标事件

在webelement接口提供的方法中,可以通过click()来模拟鼠标单击操作,但实际上鼠标交互方式很多,例如:右击、悬停、鼠标拖动等功能;

webdriver提供了ActionChains类,封装了鼠标操作的常用方法:

perform():执行所有的ActionChains中存储的行为

context_click():鼠标右击

double_click():鼠标双击

drag_and_drop():鼠标拖动

move_to_element():鼠标悬停

1、鼠标右击操作

# 鼠标右击操作

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.chrome("安装工具\python\chromedriver.exe")

driver.get("http://www.baidu.com")

# 定位到要右击的元素

right_click = driver.find_element_by_id("id")

# 对定位到的元素执行鼠标右击操作

ActionChains(driver).context_click(right_click).perform()

...

2、鼠标悬停

鼠标悬停弹出下拉菜单也是一个十分常见的功能设计,move_to_element()方法可以模拟鼠标悬停动作,其用法与context_click()相同;

# 鼠标悬停

...

above = driver.find_element_by_id("id")

ActionChains(driver).move_to_element(above).perform()

...

3、鼠标双击操作

double_click()方法用于模拟鼠标双击操作;

# 鼠标双击操作

...

double_click = driver.find_element_by_id("id")

ActionChains(driver).double_click(double_click).perform()

...

4、鼠标拖放操作

drag_and_drop(source,target)在源元素上按住鼠标左键,然后移动到目标元素上释放;

source:鼠标拖动的源元素

target:鼠标释放的目标元素

# 定位元素的位置

...

element = driver.find_element_by_id("id")

# 定位元素要移动到的目标位置

target = driver.find_element_by_id("xx")

# 执行元素的拖放操作

ActionChains(driver).drag_and_drop(element,target).perform()

...

 

三、键盘事件

Keys()类提供了键盘上几乎所有的按键方法,send_keys()不见可以模拟键盘输入,还可以用来输入键盘上的按键,甚至是组合键,例子如下:

# 模拟键盘事件

from selenium import webdriver

# 引入keys模块

from selenium.webdriver.common.keys import Keys

driver = webdriver.chrome("安装工具\python\chromedriver.exe")

driver.get("http://www.baidu.com")

# 输入框输入内容

driver.find_element_by_id("kw").send_keys("selenium")

# 输入“教程”

driver.find_element_by_id("kw").send_keys("教程")

# 删除“教程”

driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

...

以下为常用的键盘操作:

# 常用的键盘操作

send_keys(Keys.BACK_SPACE)      删除键

send_keys(Keys.SPACE)           空格键

send_keys(Keys.TAB)             换行键

send_keys(Keys.ESCAPE)          回退键

send_keys(Keys.ENTER)           回车键

send_keys(Keys.CONTROL,‘a‘)     全选

send_keys(Keys.CONTROL,‘c‘)     复制

send_keys(Keys.CONTROL,‘v‘)     黏贴

send_keys(Keys.CONTROL,‘x‘)     剪切

send_keys(Keys.F1)              F1键

...

send_keys(Keys.F12)             F12键

 

以上为webdriver的控制浏览器操作以及模拟键盘、鼠标操作的常用方法,当然具体在实际使用过程中,还需要结合实际的业务场景,灵活运用!

 

 

(四)WebDriver API:控制浏览器及鼠标、键盘事件