一、Selenium的简介

1、是一种浏览器自动化测试框架

2、用于web应用程序的自动化测试

二、Selenium 1.0 的工作原理

(1)Selenium IDE:

Selenium的IDE(集成开发环境)是一个易于使用的Firefox插件,用于开发Selenium测试案例。它提供了一个图形用户界面,用于记录使用Firefox浏览器,用来学习和使用Selenium用户操作,但它只能用于只用Firefox浏览器不支持其它浏览器

一个firefox的plug-in,可以录制和回放并保存test cases,测试用例为html格式

(2)Selenium Core:

整个测试机制的核心部分,即有assertion(断言)机制的test suite runner。它由一些纯js代码组

成,可以运行在windows/linux的不同browser上

(3)Selenium Remote Control(RC):

一个代理与控制端,可代替Selenium core / Selenium IDE的client端(相当于通过编程来实现一

切),是支持多语言的。

三、Selenium IDE的优缺点

优点

1、非常有用的使用和安装

2、内置测试结果报告模块

3、无需编程经验

4、它用于使用Firefox或Chrome浏览器创建和执行测试用例

5、用户可以轻松记录测试脚本

6、用户可以编辑测试脚本

7、用户可以创建测试套件。

缺点

1、它不支持迭代语句

2、不支持条件语句

3、它不支持错误处理

4、它不支持数据库测试

5、仅在Firefox和Chrome中可用

6、它不会生成详细的测试报告摘要

四、selenium优缺点

优点

1、这是一个开源软件,您可以从其GitHub Repository中检出其源代码

2、它支持多种编程语言

3、它支持多种操作系统

4、它支持多种浏览器

5、它支持并行测试

缺点

1、它仅支持基于Web的应用程序,不支持基于Windows的应用程序

2、测试与图像相关的应用程序很困难

3、它不支持内置的报告功能

4、很难使用

5、新添加的功能可能无法正常工作

6、它不支持测试验证码和条形码阅读器

7、没有任何人提供现成的供应商技术支持

8、测试人员应该具有较高的编程语言知识,才能编写Selenium Automation测试脚本

五、selenium环境搭建

1、先下载python(建议是3.6或者3.7), https://www.python.org/

安装成功后将安装路径配置到环境变量

2、验证python是否安装成功: python

3、安装pip 包

https://pypi.org/project/pip/ 下载压缩包

运行cmd进入安装路径输入:python setup.py install 安装pip

4、安装selenium包

4.1 运行cmd进入安装路径输入:python setup.py install 安装

如果安装失败下载包去装

4.2下载selenium包

https://pypi.org/project/selenium/#files

解压在C:\Python27\Lib\site-packages目录下,在setup.py文件夹下执行安装 python  setup.py  install

4.3、检查Selenium是否安装成功

  使用命令”pip show selenium”可以看到当前系统中安装的版本信息

5、谷歌浏览器控制响应的版本,禁止跟新

参考资料

https://blog.csdn.net/zyp626/article/details/100050963

6、下载谷歌浏览器的驱动程序包:webdriver

6.1谷歌浏览器和谷歌驱动下载

谷歌浏览器地址: https://www.chromedownloads.net/chrome64win-beta/

谷歌驱动: http://npm.taobao.org/mirrors/chromedriver/

小小提示哦!

备注:webdriver的版本要和浏览器的版本一致

6.2谷歌浏览器版本查看 : 帮助 - 关于谷歌

6.3存放在python的python.exe的地址下

7、安装pycharm进行编码

六、Selenium API基础

1.浏览器驱动对象

1)库的导入

from selenium import  webdriver

2)创建浏览器对象

driver = webdriver.xxx()

使用dir(driver)查看方法

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法

3)浏览器尺寸相关操作

maximize_window()        最大化

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url)
driver.maximize_window()    #最大化

4)get_window_size()        获取浏览器尺寸

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url)
print(driver.get_window_size())   #获取浏览器的尺寸并输出控制台

5)set_window_size()        设置浏览器尺寸

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url)
driver.set_window_size(1000,1000)  #设置浏览器的尺寸

浏览器位置相关操作

6) get_window_position()        获取浏览器位置

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url)
driver.get_window_position() #获取浏览器的位置

7) set_window_position(x,y)        设置浏览器位置(注:显示器以左上角为(0,0),所有的位置操作都是相对于显示器左上角展开的位移操作,单位是像素。)

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url)
driver.set_window_position(500,500) #设置浏览器位置

浏览器的关闭操作

8) close()            关闭当前标签/窗口

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url)
driver.close() #关闭当前标签/窗口

9) quit()            关闭所有标签/窗口

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url)
driver.quit()  #关闭所有标签/窗口

页面请求操作

driver.get(url)        请求某个url对应的响应

refresh()                刷新页面操作

back()                回退到之前的页面

forward()                前进到之后的页面

5)获取断言信息

current_url                获取当前访问页面url

10) title                获取当前浏览器标题

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url
print(driver.title)  #显示当前页面的标题

11) get_screenshot_as_png()           保存图片

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 自己写文件
data=driver.get_screenshot_as_png()
with open("b.jpg","wb") as f:f.write(data)driver.close()

12) get_screenshot_as_file(file)       直接保存

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 保存快照操作自动写文件
driver.get_screenshot_as_file("a.jpg")

13) page_source                  网页源码

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的urlprint(driver.page_source)

2、元素的定位

1)元素定位方法的分类(调用方式):

driver.find_element_by_xxx(value)

2.使用By类型(需要导入By)

from selenium.webdriver.common.by import By

driver.find_element(By.xxx,value)

2) 元素的操作

对元素的相关操作,一般要先获取到元素,再调用相关方法

element = driver.find_element_by_xxx(value)

点击和输入

点击操作:  element.click()

清空/输入操作(只能操作可以输入文本的元素)

element.clear()            清空输入框

element.send_keys(data)        输入数据

3)元素定位方法的分类(按定位方式):

3.1   id定位

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 基于 http://www.baidu.com 进行的元素定位
daa=driver.find_element(By.ID,"kw")
daa.send_keys("python")

3.2   name

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 基于 http://www.baidu.com 进行的元素定位
daa=driver.find_element_by_name("wd")
daa.send_keys("java")

3.3   class name

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 基于 http://www.baidu.com 进行的元素定位
daa=driver.find_element_by_class_name("s_ipt")
daa.send_keys("java")

3.4   link text

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 基于 http://www.baidu.com 进行的元素定位
daa=driver.find_element_by_link_text("hao123")
daa.click()

3.5   partial link text

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 基于 http://www.baidu.com 进行的元素定位
daa=driver.find_element_by_partial_link_text("新")
daa.click()

3.6   xpath

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 基于 http://www.baidu.com 进行的元素定位
daa=driver.find_element_by_xpath(".title-text.c-font-medium.c-color-t")  #可以使用filebug工具直接获取

3.7   css selectctor

from selenium import  webdriver # 库的导入
from selenium.webdriver.common.by import By
driver=webdriver.Firefox()  # 创建浏览器对象
print(dir(driver)) # 使用dir(driver)查看方法
url="http://www.baidu.com" #可根据公司需求的接口,这里只是小小的测试
driver.get(url) #获取当前的url# 基于 http://www.baidu.com 进行的元素定位
daa=driver.find_element_by_css_selector(".hot-refresh-text") #和xpath一样,通过filebug直接拿到自己想要的元素

七、Selenium API高级

1.多标签之间的切换

1)获取所有窗口的句柄

handles = driver.window_handlers()

调用该方法会得到一个列表,在selenium运行过程中的每一个窗口都有一个对应的值存放在里面。

2)通过窗口的句柄进入的窗口

driver.switch_to_window(handles[n])

driver.switch_to.window(handles[n])

通过窗口句柄激活进入某一窗口

场景:以58同城为例,首先进入58页面点击租房跳转租房页面(停留2秒)>选择昌平区(停留2秒)>昌平区周围(停留2秒)>在租房界面跳转二手房页面

代码如下:

from selenium import  webdriver # 库的导入
import  time
driver=webdriver.Firefox() # 创建浏览器对象
driver.get("https://bj.58.com/")  #可根据公司需求的接口,这里只是小小的测试
# 获取句柄并打印
handles=driver.window_handles
print(handles)
# 点击租房停留2秒进入租房页面
zf=driver.find_element_by_xpath(".//*[@id='fcNav']/em/a[1]")
zf.click()
time.sleep(2)
# 获取句柄
handles=driver.window_handles
# 替换当前页面,不进行替换会报错哦
driver.switch_to.window(handles[1])
# 点击昌平
cp=driver.find_element_by_xpath("html/body/div[5]/div[2]/div[2]/dl[1]/dd/a[4]") # filebug哦!直接获取元素
cp.click()
time.sleep(2)
print(handles)
# 昌平周边
cpp=driver.find_element_by_xpath("html/body/div[5]/div[2]/div[2]/dl[1]/dd/div/a[4]")
cpp.click()
time.sleep(2)
handles=driver.window_handles
print(handles)
driver.switch_to.window(handles[1])
# 进入二手网
es=driver.find_element_by_xpath("html/body/div[4]/ul/li[2]/a")
es.click()

Web自动化测试(Selenium自动化测试框架)相关推荐

  1. 自动化测试 | Selenium自动化测试框架,实战遇到的坑都在这了,玩转自动化测试

    目录:导读 前言 一.浏览器出现新的页面 二.下拉选框的选择 三.常用的键盘事件 四.切换Frame(重要) 五.常见报错:element not interactble 六.属性几乎相同的div等元 ...

  2. Selenium Web自动化测试——基于unittest框架的PO设计模式

    引言 前面一直在讲接口自动化测试框架与案例分享,很少讲Selenium这个Web自动化测试神器.它主要用来做UI自动化测试,大家都知道UI自动化测试成本相当高,一般的Web自动化测试我是一直不建议做的 ...

  3. 自从掌握了Selenium自动化测试框架设计,我在公司都横着走!

    测试工作对技术的要求不低,测试工程师更是高技能职位.但有很多新入行的伙伴认为,测试工作就是钟"点"工,用鼠标在软件点里点~点~点~就能做测试.这种思维是很可怕的,这会对测试人的职业 ...

  4. 一套完整的Selenium自动化测试框架设计实战,这次38K, 妥了

    金九银十,大家都铆足干劲想抓住机会涨薪进大厂.结合这几年的行业趋势,想要挑战大厂面试,首先必须吃透Selenium自动化测试框架设计. 这里说一下原因: 首先,一线互联网大厂无一例外,全都要求测试人掌 ...

  5. docker+robot framework+selenium并发web应用UI自动化测试实践

    自己在日常测试中,会搭建UI自动化测试框架来进行web应用的回归测试,在这过程中遇到了许多问题,如测试脚本和执行机不分离,串行测试效率低下,环境搭建麻烦等问题.在这个过程中,自己也在网上看一些前辈的搭 ...

  6. 关于测试的一篇论文, 基于web端selenium的自动化测试设计与实现(有需要的联系我 此论文内容缺失,不要直接用 一经发现,后果自负)

    论文题目:基于web端selenium的自动化测试设计与实现 学科(专业):计算机科学与技术 申请人: 指导教师: 摘 要 随着我国科学技术的飞速发展,软件应用技术的更新速度日新月异,规模不断扩大.普 ...

  7. Selenium自动化测试:8种元素定位+unittest框架设计

    作者简介: 笔名,唐米.参与过汇丰银行,国家电网,中国电信等多个大型项目的研发和管理,擅长的技术领域为安全测试,性能测试,自动化框架搭建与维护,曾受南京航空航天大学邀请分享Linux.oracle等测 ...

  8. Selenium+Jsoup框架实现爬虫与自动化测试实战

    爬虫的场景 小许同学想做一个新闻网站,但新闻网站需要很多新闻素材,并且新闻对实时性要求比较高,从发现新闻热点,写稿,审核,排版.发稿.投放需要多人多个部门协同完成,当你这些资源都不具备的时候,而你恰恰 ...

  9. web 自动化测试 selenium基础到应用(目录)

    第一章   自动化测试前提及整体介绍 1-1功能测试和自动化测试的区别 1-2自动化测试流程有哪些 1-3自动化测试用例和手工用例的区别 1-4 自动化测试用例编写 1-5 selenium的优势以及 ...

最新文章

  1. 性能测试总结(一)---基础理论篇
  2. carthage update --no-use-binaries --platform mac,ios
  3. 细节满满!理解对比学习和SimCSE,就看这6个知识点
  4. 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization
  5. faceapp怎么合成未来宝宝照片_宝宝出生后,爸爸们应该如何宣布喜讯,各种官宣文案孕妈赶紧收藏...
  6. C和指针之函数之归以字符形式按顺序打印数字的每位数字(递归和非递归)
  7. 幂等问题 vs 如何判断是否是4的幂
  8. Spring请求级备忘录
  9. React 产品实现 -任务管理工具“氢”
  10. topcoder srm 628 div2 250 500
  11. Timus 1015. Test the Difference!
  12. git ssh配置文件 服务器_【GIT】日常开发中的这些Git技巧你知道吗?
  13. Java读带有BOM的UTF-8文件乱码原因及解决方法(转)
  14. 13.python中web框架概念的引入。
  15. 【MATLAB】图像分割实验
  16. python因子分析法详细步骤_Python——因子分析
  17. 网络毕业设计 ——无线网规划与设计
  18. ipscan(ip端口扫描工具) 2.21 中文绿色版 局域网ip端口扫描神器
  19. Android 10.0 recovery prompt_and_wait 跳过弹窗 自动 WIPE_DATA(出厂设置)
  20. 删不掉文件夹怎么办?

热门文章

  1. k8s(十二)、分布式存储Ceph RBD使用
  2. 诱人的Siri 开启人机交互的大门
  3. 002__Hive的tez引擎的配置步骤
  4. android状态栏高度px,安卓720*1280界面尺寸规范参考
  5. spark技术学习与思考(sparkcoresparksql)
  6. Unity3D 网页插件Embedded Browser(ZFBrowser)PC端打包文件无法加载网页解决方法
  7. compareTo的用法
  8. Eclipse在线安装主题(color theme)以及安装color theme第三方主题(图文)
  9. 邻接矩超详解(C/C++)
  10. elementUI表格自动刷新