今天给大家讲解的是自动化测试示例的解析,如有不对的地方请多多指教。

自动化测试示例如下:

from selenium import webdriver

  from selenium.webdriver.common.keys import Keys

  driver = webdriver.Chrome()

  driver.get("https://pypi.org/")

  print(driver.title)

  assert 'Python' in driver.title

  elem = driver.find_element_by_name('q')

  elem.clear()

  elem.send_keys('deniro')

  elem.send_keys(Keys.RETURN)

  assert 'No results found.' not in driver.page_source

  driver.close()

解析如下:

(1)、首先导入 webdriver 与 Keys 模块。selenium.webdriver 模块包含驱动浏览器的实现方法。 支持Firefox、Chrome、IE 浏览器。 Keys 模块包含键盘中的键,诸如F1,ALT 等。

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

(2)、接下来,创建 Chrome WebDriver 实例。

driver = webdriver.Chrome()

  driver.get 方法会在浏览器中打开指定的 URL 页面。 当页面完全加载后(会触发 “onload” 事件),才会把控制权交给我们写的测试脚本。

  注意: 如果如果加载的页面,使用了很多 AJAX 请求,那么 WebDriver 可能不知道完全加载的时间点。

(3)、然后是一个断言,测试网页标题(即 H5 中的“Python” 字符串:

assert 'Python' in driver.title

(4)、 WebDriver 提供了多种查找元素的方法,形如 使用 find_element_by_*。  例如,这里使用了 find_element_by_name 方法通过其标签的 name 属性,来查找输入框元素 。

elem = driver.find_element_by_name('q')

(5) 、然后,我们模拟键盘操作,在输入框中输入字符。 那些特殊字符可以使用 selenium.webdriver.common.keys 来输入,比如示例中的回车符。  有些输入框有设置默认值,所以我们首先清除输入框中的默认值,以避免影响预期结果:

elem.clear()

  elem.send_keys('deniro')

  elem.send_keys(Keys.RETURN)

如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。

(6)、回车后,浏览器就会调用后端服务,执行搜索操作,最后返回搜索结果。我们可以在返回的页面源代码中,测试我们所希望或不希望看到的字符:

assert 'No results found.' not in driver.page_source

(7)、最后关闭浏览器 。  也可以调用 quit 方法实现类似功能,但它们之间有一些区别。 quit 方法会退出整个浏览器,而 close 方法只会关闭浏览器中的一个选项卡,如果仅打开一个选项卡,那么大多数现代浏览器也会整个关闭 。

driver.close()

以上,希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

最新文章

  1. Java设计模式——线程安全的单件模式
  2. 什么是js和js的基本语法
  3. ubuntu为用户增加sudoer权限的两种方法
  4. 升级CUDA版本导致VS2010错误:未找到导入的项目XXX,请确认<Import>声明中的路径正确,且磁盘上存在该文件
  5. Failed to execute goal on project MakeFriends: Could not resolve dependencie The POM for .chengpai.jtd:jtd-service-api:jar:1.0-SNAPSHOT is missing, no dependency information available
  6. atitit.RESTful服务的概览and框架选型
  7. rabbitmq+ keepalived+haproxy高可用集群详细命令
  8. mac 启动nfsd共享
  9. SQL order by 两个字段排序
  10. Python 命令行参数和getopt模块详解
  11. 偶遇mysql外键不好使
  12. 响应式布局:Flexbox应用总结
  13. js事件的相关收集
  14. 用Visual Studio 2015 编写驱动之前一定要注意的问题!!!
  15. JVM内存划分基础知识
  16. ASP.NET Core MVC中构建Web API
  17. 未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Runtime.CompilerServices.TuppressIldasmAttribute”。已解决
  18. js /Date(1550273700000)/ 格式转换
  19. springboot学习二:配置文件配置
  20. c++沉思录 学习笔记 第五章 代理类

热门文章

  1. PHP is_resource() 函数
  2. 7.6 NOI模拟赛 灯 根号分治
  3. EACCES: permission denied,mkdir … npm install 安装依赖问题解决
  4. 【NOI2018】归程 题解(kruskal重构树+最短路)
  5. 开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流
  6. 005_针对于go语言中速率限制的思考
  7. 干!一张图整理了 Python 所有内置异常
  8. 异步文件通道Java NIO你需要了解多少,来看看这篇文章
  9. Java泛型是什么?实战demo
  10. 学习Hibernate5这一篇就够了