• Selenium:浏览器及鼠标、键盘事件


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

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

    一、控制浏览器

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

    1、控制浏览器窗口大小

    1 # 控制浏览器大小
    2 from selenium import webdriver
    3 driver = webdriver.Chrome("安装工具pythonchromedriver.exe")
    4 driver.get("http://www.baidu.com")
    5 # 参数数字为像素点
    6 print("设置浏览器宽480、高800显示")
    7 driver.set_window_size(480,800) 

    2、全屏显示

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

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

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

     1 # 控制浏览器前进、后退
     2 from selenium import webdriver
     3 driver = webdriver.Chrome("安装工具pythonchromedriver.exe")
     4 # 访问百度首页
     5 first_url='http://www.baidu.com''
     6 print("now access %s "%(first_url))
     7 driver.get(first_url)
     8 # 访问新闻页面
     9 second_url='http://www.news.baidu.com'
    10 print("now access % s "%(second_url)")
    11 driver.get("second_url")
    12 # 后退到百度首页
    13 print("back to %s "%(first_url)")
    14 driver.back()
    15 # 前进到新闻页
    16 print("forward to %s "%(second_url)")
    17 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、鼠标右击操作

     1 # 鼠标右击操作
     2 from selenium import webdriver
     3 from selenium.webdriver.common.action_chains import ActionChains
     4 driver = webdriver.Chrome("安装工具pythonchromedriver.exe")
     5 driver.get("http://www.baidu.com")
     6 # 定位到要右击的元素
     7 right_click = driver.find_element_by_id("KW")
     8 # 对定位到的元素执行鼠标右击操作
     9 ActionChains(driver).context_click(right_click).perform()
    10 ...

    2、鼠标悬停

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

    1 # 鼠标悬停
    2 ...
    3 above = driver.find_element_by_id("id")
    4 ActionChains(driver).move_to_element(above).perform()
    5 ... 

    3、鼠标双击操作

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

    1 # 鼠标双击操作
    2 ...
    3 double_click = driver.find_element_by_id("id")
    4 ActionChains(driver).double_click(double_click).perform()
    5 ...

    4、鼠标拖放操作

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

    source:鼠标拖动的源元素

    target:鼠标释放的目标元素

    1 # 定位元素的位置
    2 ...
    3 element = driver.find_element_by_id("id")
    4 # 定位元素要移动到的目标位置
    5 target = driver.find_element_by_id("xx")
    6 # 执行元素的拖放操作
    7 ActionChains(driver).drag_and_drop(element,target).perform()
    8 ... 

    三、键盘事件

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

     1 # 模拟键盘事件
     2 from selenium import webdriver
     3 # 引入keys模块
     4 from selenium.webdriver.common.keys import Keys
     5 driver = webdriver.Chrome("安装工具pythonchromedriver.exe")
     6 driver.get("http://www.baidu.com")
     7 # 输入框输入内容
     8 driver.find_element_by_id("kw").send_keys("selenium")
     9 # 输入“教程”
    10 driver.find_element_by_id("kw").send_keys("教程")
    11 # 删除“教程”
    12 driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
    13 ...

    以下为常用的键盘操作:

     1 # 常用的键盘操作
     2 send_keys(Keys.BACK_SPACE)
     3 send_keys(Keys.SPACE)
     4 send_keys(Keys.TAB)
     5 send_keys(Keys.ESCAPE)
     6 send_keys(Keys.ENTER)
     7 send_keys(Keys.CONTROL,'a')
     8 send_keys(Keys.CONTROL,'c')
     9 send_keys(Keys.CONTROL,'v')
    10 send_keys(Keys.CONTROL,'x')
    11 send_keys(Keys.F1)
    12 ...
    13 send_keys(Keys.F12) 

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

  • 相关阅读:
    使用 Vim 搭建 JavaScript 开发环境
    SpaceVim 语言模块 erlang
    SpaceVim 语言模块 lua
    SpaceVim 语言模块 python
    SpaceVim 语言模块 elixir
    SpaceVim 语言模块 dart
    SpaceVim 语言模块 elm
    如何配置 SpaceVim
    彻底理解浏览器缓存机制
    react-创建react元素
  • 原文地址:https://www.cnblogs.com/imyalost/p/7259830.html
Copyright © 2020-2023  润新知