(一)  WebDriver

WebDriver提供许多用来与浏览器交互的功能和设置,通过WebDriver的功能和一些方法,来实现与浏览器窗口、警告、框架和弹出窗口的交互,它也提供了自动化操作浏览器导航栏、设置cookies、截屏等方便我们测试的特性。

(二)  WebDriver功能及方法

功能/属性

简单说明

current_url

  1. 获取当前页面的URL地址(driver.current_url
  1. 下面的都是以这种方式,driver指浏览器驱动实例。
  1. window_handle
  1. 获取当前窗口的句柄
  1. name
  1. 获取该实例底层的浏览器名称
  1. orientation
  1. 获取当前设备的方位
  1. page_source
  1. 获取当前页面源代码
  1. title
  1. 获取当前页面的标题
  1. window_handles
  1. 获取当前会话里所有窗口的句柄

方法

简单说明

  1. close()
  1. 关闭当前浏览器窗口
  1. back()
  1. 后退一步
  1. forward()
  1. 前进一步
  1. get(url)
  1. 访问URL并加载网页到当前的浏览器会话
  1. maximize_window()
  1. 最大化浏览器窗口
  1. quit()
  1. 退出当前的驱动实例并关闭所有相关窗口
  1. refresh()
  1. 刷新当前页面
  1. implicitly_wait()
  1. 等待时间,单位为秒
  1. set_page_load_timeout()
  1. 设置一个页面完全加载完成的超时等待时间,单位为秒
  1. set_script_timeout()
  1. 设置脚本执行的超时时间

(三)  WebElement功能及方法

    通过WebElement可以实现与网站页面元素的交互,包括文本框、文本域、按钮、单选框、多选框、表格、行、列和div等。

功能/属性

简单说明

  1. size
  1. 获取元素大小(例如element.size
  1. 下面都是以这种方式,element指定位的某个元素
  1. tag_name
  1. 获取标签的名称
  1. text
  1. 获取元素的文本值

方法

简单说明

  1. clear()
  1. 清除文本框或文本域的内容
  1. click()
  1. 点击元素
  1. get_attribute(name)
  1. 获取元素的属性值,name:要获取的属性名称
  1. is_displayed()
  1. 检查元素对于用户是否可见
  1. is_enabled()
  1. 检查元素是否可用
  1. is_selected()
  1. 检查元素是否被选中,主要用于单选框和复选框
  1. send_keys(value)
  1. 输入文本,value是要输入的值
  1. submit()
  1. 提交表单。如果对元素使用,将会提交该元素所属的表单
  1. value_of_css_property(property_name)
  1. 获取CSS属性的值, property_nameCSS属性的名称

(四)  操作表单、文本框、复选框、单选按钮

通过WebElement实现与各种HTML控件的自动化交互,例如在一个文本框输入文本、单击按钮、选择单选框或者复选框、获取元素的文本及属性值等。

例如,博客园注册功能的自动化:

(这里只是举个例子哈,直接复制是没用的,下面的代码只定位部分字段(邮箱、登录名和注册按钮),而且没有处理验证码,验证码部分以后再研究怎么处理)

  1. def test_register_new_user(self):
  2.  
  3. #定位并点击博客园首页的 注册
  4.  
  5. login_area = self.driver.find_element_by_css_selector('#login_area')
  6.  
  7. register = login_area.find_element_by_link_text('注册')
  8.  
  9. register.click()
  10.  
  11. #检查打开的网页标题是不是'用户注册 - 博客园'
  12.  
  13. self.assertTrue('用户注册 - 博客园' == self.driver.title)
  14.  
  15. # 定位注册页面各个字段及注册按钮
  16.  
  17. user_email = self.driver.find_element_by_id('Email')
  18.  
  19. user_login_name = self.driver.find_element_by_id('LoginName')
  20.  
  21. register_btn = self.driver.find_element_by_id('submitBtn')
  22.  
  23. # 检查字段允许的最大输入字符与最小输入字符是否与预期一致
  24.  
  25. self.assertEqual('', user_login_name.get_attribute('data-val-length-min'))
  26.  
  27. self.assertEqual('', user_login_name.get_attribute('data-val-length-max'))
  28.  
  29. # 检查各个字段及按钮对用户是否可见及可用
  30.  
  31. self.assertTrue(user_email.is_displayed() and user_email.is_enabled())
  32.  
  33. # 输入用户信息
  34.  
  35. user_email.send_keys('test@163.com')
  36.  
  37. user_login_name.send_keys('test')
  38.  
  39. # 点击注册按钮
  40.  
  41. register_btn.click()
  42.  
  43. # 检查是否显示注册成功的提示
  44.  
  45. self.assertTrue(self.driver.find_element_by_css_selector('p.txt-title.success-color').text == '注册成功')

例如,可以使用下面的方式检查博客园登录页面的复选框是否被选中

  1. def test_login(self):
  2.  
  3. …省略打开登录页面的代码(这段就不注释了#)
  4.  
  5. automatic_login = self.driver.find_element_by_id('remember_me')
  6.  
  7. #检查登录页面复选框,是否默认不被选中
  8.  
  9. self.assertFalse(automatic_login.is_selected())
  10.  
  11. #点击选中复选框
  12.  
  13. automatic_login.click()

Python+Selenium笔记(七):WebDriver和WebElement的更多相关文章

  1. PYTHON 爬虫笔记七:Selenium库基础用法

    知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...

  2. Python+Selenium笔记(九):操作警告和弹出框

    #之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一 ...

  3. python+selenium自动测试之WebDriver的常用API(基础篇二)

    本篇介绍一下python+selenium复杂操作的处理,基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.常见特殊情况处理如iframe/弹窗处理 有 ...

  4. Python+Selenium笔记(十四)鼠标与键盘事件

     (一) 前言 Webdriver高级应用的API,允许我们模拟简单到复杂的键盘和鼠标事件,如拖拽操作.快捷键组合.长按以及鼠标右键操作,都是通过使用webdriver的Python API 中的Ac ...

  5. Python+selenium常用方法(Webdriver API)

    小编整理了目前学习的Python+selenium常用的一些方法函数,以后有新增再随时更新. 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() ...

  6. webdriver(python)学习笔记七——多层框架定位与智能等待

    多层框架或窗口定位: switch_to_frame() switch_to_window() 智能等待: implicitly_wait() 现在web应用中经常会遇到框架如(frame)或窗口(w ...

  7. Python+Selenium笔记(十):元素等待机制

     (一) 前言 突然的资源受限或网络延迟,可能导致找不到目标元素,这时测试报告会显示测试失败.这时需要一种延时机制,来使脚本的运行速度与程序的响应速度相匹配,WebDriver为这种情况提供了隐式等待 ...

  8. Python+Selenium笔记(四):unittest的Test Suite(测试套件)

    (一) Test Suite测试套件 一个测试套件是多个测试或测试用例的集合,是针对被测程序的对应的功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行. 应用unittest的TestSui ...

  9. Python+Selenium笔记(三):使用unittest

    #网络很慢可能会运行报错 (一)   前言 Selenium WebDriver是一个浏览器自动化测试的API集合.它提供了很多与浏览器自动化交互的特性,并且这些API主要是用于测试Web程序.如果仅 ...

随机推荐

  1. linux free命令详解(一)

    一. 作用 free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区. 二. 语法 free [选项] 三. 选项       默认情况下,即在没有选项的情况下,&qu ...

  2. 前端组件化Polymer入门教程(7)——Local DOM

    DOM元素的创建和管理被称为本地DOM(Local DOM) 本地DOM模板 如果你需要使用本地DOM,你们需要用<dom-module>并指定一个相匹配的ID. <dom-modu ...

  3. JDK7 异常的多重捕获

    Java 7之前的版本: 1 2 3 4 5 6 7 8 9 10 catch (IOException ex) {      logger.error(ex);      throw new MyE ...

  4. postgresql逻辑结构--表空间(四)

    一.创建表空间 1. 语法:create tablespace tablespace_name [owner user_name] location 'directory' postgres=# cr ...

  5. 编码算法-Base64

    Base64是一种编码算法,因为这种算法只支持64个[可打印字符],所以叫做Base64. 为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换.编码表的大小为2^6=64, ...

  6. ActiveMQ——activemq的使用java代码实例(精选)

    ActiveMQ 在java中的使用,通过单例模式.工厂实现 Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表():   Topic Queue 概要 Publish  ...

  7. 解压cpio.gz、zip类型文件

    aix上的oracle介质文件是10gr2_aix5l64_database.cpio.gz 解压方法: gunzip 10gr2_aix5l64_database.cpio.gz cpio -idm ...

  8. 【区块链Go语言实现】Part 1:区块链基本原型

    0x00 介绍 区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未被完全意识到.从本质上讲,区块链只是一种记录的分布式数据库.但它之所以独特,是因 ...

  9. picker(级联)组件及组件封装经验

    组件封装的几个经验 a.参数:最佳方式,仅一个object参数,所需要的实际参数,作为对象属性传入. 如此,便于数据的处理和扩展.例如,后期扩展需要增加参数,或者调整参数时,如果使用的对象传入,老的调 ...

  10. zoj 2104 Let the Balloon Rise(map映照容器的应用)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2104 题目描述: Contest time again! Ho ...