今天想跟大家分享的是Selenium自动化测试网页,就是关于selenium的自动化测试一些基础的东西,如有不对的地方请多多指教。

一、安装环境

1、Python环境

安装完成后通过Windows命令提示符CMD输入“python”,查看是否安装成功

2、安装setuptools与pip

setuptools是PEAK(Python enterprise Application Kit)的一个副项目,是python的distutilsde的增强工具,可以更方便创建和发布python包,特别是对其他包有依赖的情况;

pip是一个安装和管理python包的工具,通过pip来安装python包将变得很简单,省去了繁琐的过程,pip的安装依赖于setuptools,安装pip之前需要先安装setuptools;

3、下载selenium包

pip install selenium

4.下载浏览器驱动

火狐和谷歌各有各的驱动

下载链接:https://www.seleniumhq.org/do...

简单示例

示例名称: test_python_org_search.py

import unittest

#引入 unittest 模块是基于JAVAJUnit的Python内置的模块。 该模块提供了一个框架去组织测试用例

  from selenium import webdriver

  #selenium.webdriver 模块提供了所有WebDriver的实现

  from selenium.webdriver.common.keys import Keys

  # Keys 类提供所有的键盘按键操作

  class PythonOrgSearch(unittest.TestCase):

  #测试类继承自 unittest.TestCase. 继承 TestCase 类是告诉 unittest 模块该类是一个测试用例

  def setUp(self):

  self.driver = webdriver.Firefox()

  #SetUp 方法是初始化的一部分,创建了一个Firefox WebDriver的一个实例

  def test_search_in_python_org(self):

  driver = self.driver

  driver.get("http://www.python.org")

  #driver.get 方法将会根据方法中给出的URL地址打开该网站

  self.assertIn("Python", driver.title)

  #使用assert断言的方法判断在页面标题中是否包含 “Python”

  elem = driver.find_element_by_name("q")

  #找到name为q的DOM节点

  elem.send_keys("pycon")

  #在name为q的DOM节点中,输入pycon

  elem.send_keys(Keys.RETURN)

  #按enter键

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

  def tearDown(self):

  self.driver.close()

  #tearDown 方法会在每一个测试方法执行之后被执行。 该方法可以用来做一些清扫工作,比如关闭浏览器。 当然你也可以调用 quit 方法代替`close`方法

  #区别:quit 将关闭整个浏览器,而`close`只会关闭一个标签页

  if __name__ == "__main__":

  unittest.main()

  #入口函数

可直接在shell中运行:python test_python_org_search.py

 常用方法讲解

 1.打开一个页面

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

  WebDriver 将等待,直到页面完全加载完毕(其实是等到 onload 方法执行完毕), 然后返回继续执行你的脚本。 值得注意的是,如果你的页面使用了大量的Ajax加载, WebDriver可能不知道什么时候页面已经完全加载。

2.与页面交互

  WebDriver 提供了大量的方法帮助你去查找元素,例如

 <input type="text" name="passwd" id="passwd-id" />

  可通过以下方法查找:

element = driver.find_element_by_id("passwd-id")

  element = driver.find_element_by_name("passwd")

  element = driver.find_element_by_xpath("//input[@id='passwd-id']")

  你还可以通过链接的文本查找他,需要注意的是,这个文本必须完全匹配。 当你使用XPATH时,你必须注意,如果匹配超过一个元素,只返回第一个元素。 如果上面也没找到,将会抛出 NoSuchElementException异常。

  执行一些操作,例如:

  在文本框中输入一些内容:element.send_keys("some text")

  清除内容:element.clear()

  选择下拉框:WebDriver的支持类有一个叫做 Select的类

  from selenium.webdriver.support.ui import Select

  select.select_by_index(index)根据option的顺序

  select.select_by_visible_text("text")根据文本

  select.select_by_value(value)根据它的value值

  取消选择:select.deselect_all()

  提交选择:element.submit()

 3.拖放

element = driver.find_element_by_name("source")

  target = driver.find_element_by_name("target")

  from selenium.webdriver import ActionChains

  action_chains = ActionChains(driver)

  action_chains.drag_and_drop(element, target).perform()

 4.弹出对话框处理方式

  alert = driver.switch_to_alert()

  switch_to_alert()   #定位弹出对话

  text()    #获取对话框文本值

  accept() #相当于点击"确认"

  dismiss() #相当于点击"取消"

  send_keys() # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。

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

 5.操作cookie

  打开一个页面 driver.get(“http://www.example.com”)

  现在设置Cookies,这个cookie在域名根目录下(”/”)生效 cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’} driver.add_cookie(cookie)

  现在获取所有当前URL下可获得的Cookies driver.get_cookies()

6.查找元素

  find_element_by_id

  find_element_by_name

  find_element_by_xpath

  find_element_by_link_text

  find_element_by_partial_link_text

  find_element_by_tag_name

  find_element_by_class_name

  find_element_by_css_selector

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

记一个Selenium自动化测试网页的更多相关文章

  1. Python selenium自动化网页抓取器

    (开开心心每一天~ ---虫瘾师) 直接入正题---Python selenium自动控制浏览器对网页的数据进行抓取,其中包含按钮点击.跳转页面.搜索框的输入.页面的价值数据存储.mongodb自动i ...

  2. Selenium自动化测试第二天(上)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  3. Selenium自动化测试第二天(下)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  4. Selenium自动化测试第一天(上)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  5. Selenium自动化测试第一天(下)

    如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...

  6. 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  7. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  8. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  9. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

随机推荐

  1. 7.1 NOI模拟赛 凸包套凸包 floyd 计算几何

    计算几何之所以难学 就是因为太抽象了 不够直观 而且情况很多 很繁琐 甚至有一些东西不清不楚.. 这道题注意到题目中的描述 一个鸽子在两个点所连直线上也算. 通过看题解 发现这个地方并非直线而是线段 ...

  2. 一本通 高手训练 1781 死亡之树 状态压缩dp

    LINK:死亡之树 关于去重 还是有讲究的. 题目求本质不同的 具有k个叶子节点的树的个数 不能上矩阵树. 点数很少容易想到装压dp 考虑如何刻画树的形状 发现一个维度做不了 所以. 设状态 f[i] ...

  3. Hadoop学习之TextInputFormat分片逻辑探究

    期望 顺着上一篇文章<Hadoop学习之第一个MapReduce程序>中遗留的分片疑惑,探究TextInputFormat的分片逻辑. 第一步 上Apache官网下载实验所使用的Hadoo ...

  4. 畅购商城(四):Lua、OpenResty、Canal实现广告缓存与同步

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...

  5. 使用pytorch快速搭建神经网络实现二分类任务(包含示例)

    使用pytorch快速搭建神经网络实现二分类任务(包含示例) Introduce 上一篇学习笔记介绍了不使用pytorch包装好的神经网络框架实现logistic回归模型,并且根据autograd实现 ...

  6. Pytorch_第五篇_深度学习 (DeepLearning) 基础 [1]---监督学习与无监督学习

    深度学习 (DeepLearning) 基础 [1]---监督学习与无监督学习 Introduce 学习了Pytorch基础之后,在利用Pytorch搭建各种神经网络模型解决问题之前,我们需要了解深度 ...

  7. Android 菜单的使用

    有时间就随笔记录自己遇到的问题和所学的知识哈. 这是对本牛崽知识的提升也可以给其他牛牛们来点鸡汤和开胃菜. 菜单Menu的创建 首先menu是属于布局的嘛,所以嘞,咱们得在res(也就是布局资源)创建 ...

  8. qt事件过滤器的使用(可以用于控制屏幕背光等)

    在嵌入式qt项目中,有时并不需求屏幕一直亮着,需要一段时间不操作时,将屏幕背光关掉,以达到节能的目的: 在qt项目中,可以通过重写事件过滤器来实现屏幕操作的检测,加上定时器的时间控制,可以实现指定时间 ...

  9. Hive: Reflect UDF

    Reflect UDF JAVA类和方法通常用于处理用户希望在hive中使用的确切的函数.相比与封装一个UDF然后调用这个方法,这些 方法主要通过反射UDF去调用.Reflect使用Java反射去实例 ...

  10. java目前常用的几种定时任务

    java目前常用的几种定时任务 JDK自带的Timer spring的Task Quartz elastic-job分布式定时任务 一.JDK自带的Timer Timer是jdk中提供的一个定时器工具 ...