本节内容: selenium的安装 selenium的快速使用 requests如何处理cookie
-selenium是浏览器自动化的框架 -用来做web自动化测试 -App测试也是用的selenium,很多同学听说的都是App测试是用的appium,实际上appium的底层是用selenium做驱动的
浏览器是:浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件 web是:web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面, 其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构
web自动化测试 VS 接口自动化测试
web自动化测试成本高,效用低,测试金字塔 测试金字塔:从上往下,成本越低,效用更高 系统测试----web/app/UI 集成测试----接口 单元测试
为什么还要做web自动化,手工测试不香吗? -重复性的工作 -冒烟测试—主流程 -正向用例
web自动化测试,基本上就是测UI
我们做web自动化测试是因为非常急,使用自动化,我可以做其他事情? -非常急,更不应该实现自动化 -写自动化测试脚本花时间 -什么时候实现自动化测试? -项目稳定的时候 -有空闲的时候
1、pip install selenium 如果已经安装,需要更新的:pip install -U selenium -已经安装,但是发现库找不到,可能是因为你当前使用的环境是虚拟环境 -如何判断你处于一个虚拟环境当中 -命令行查看路径前是否有括号 -default setting-project interpreter,如果新加环境的时候要选择:system interpreter,不要选virtualenv environment -虚拟环境主要是为了将各个项目隔开,每个项目可能使用的库不一样,这样如果全放到系统环境里面,会出现很多问题
2、安装一个浏览器驱动 -使用Chrome浏览器,下载:chromedriver -驱动链接:https://npm.taobao.org/mirrors/chromedriver -下载驱动版本,网上说的要下Chrome版本对应的版本,这是不对的 -要下载的话,建议下稳定的:71版本,或者是2.38也可以,如果下载了这个,不行再去下对应版本的,不断的去尝试 -进去下载的话,如果是windows系统,直接下win32就行,这里只是说明是windows系统,并不代表是32位的,没有多少位之说 -使用火狐浏览器,下载火狐浏览器的驱动
3、将驱动放到环境变量的路径,不管是什么路径,只要是环境变量就行 -建议放到Python安装根目录下 -注意事项:使用pycharm安装库的时候,一定不要勾选:install to user’s site packages directory,如果勾选很容易出问题
selenium 的架构 服务器 编程语言 驱动(提供了接口) 浏览器(Python+ selenium) webdriver【桥梁/接口】 Chrome
demo_01_启动浏览器.py
from selenium import webdriver import time #启动浏览器 #前提:依赖:先安装好chromedriver.exe驱动,不然是启动不了浏览器 driver=webdriver.Chrome() #如果chromedriver.exe没有放到环境变量的路径下,可以通过 executable_path 配置 chromedriver 的路径 #driver=webdriver.Chrome(executable_path=r'路径') #打开网址:百度 driver.get('https://www.baidu.com/') #最大化 driver.maximize_window() #最小化 driver.minimize_window() #设置窗口大小 driver.set_window_size(width=600,height=800) #打开知乎 driver.get('http://zhihu.com/') #后退 driver.back() #前进 driver.forward() #刷新 driver.refresh() #退出 driver.quit() #休眠 time.sleep(2)demo_02_driver的属性.py
#from selenium import webdriver #等价于下面 from selenium.webdriver import Chrome driver=Chrome() print(driver) #这里的session_id指的是:一个session_id是打开一次浏览器 driver.get('https://www.baidu.com/') #网页标题 print(driver.title) #当前访问的网页URL print(driver.current_url) #所有窗口句柄,相当于窗口ID,是列表形式显示 #你打开了多少个标签页(窗口),就有多少个元素存在列表当中 print(driver.window_handles) #当前的窗口句柄,当前窗口ID print(driver.current_window_handle) #当前页面的源代码 #前端工程师编写的页面(HTML) #HTML是我们进行web自动化测试的依据 print(driver.page_source)demo_03_元素定位.py
from selenium import webdriver import time driver=webdriver.Chrome() driver.get('https://www.baidu.com/') #元素定位 #元素:网页页面的一个组件 #定位:查找要操作的元素的过程 #8 大元素定位方式 driver.find_element_by_id('kw').send_keys('lemon') time.sleep(2) driver.find_element_by_id('su').click()demo_04_cookie.py
''' requests cookie管理 session: 开启浏览器 /login /invest 分两次:2个会话,第一次的登录状态会传到第二次去吗?不会 1次会话,第一次访问login,可以传到invest去 requests 是可以用session记录cookie ''' #基于cookie机制的登录 import requests s=requests.session() #访问login,login获取到的cookie自动保存到session s.request(method='get',url='/login') s.request(method='get',url='/invest') #如果要使用cookie机制,则需要将requests的封装修改为cookie的即可注意事项:
-安装:71驱动,或者2.38驱动 -maxmize_window 窗口最大化 打开浏览器,养成习惯窗口最大化 -window_handle 获取所有的窗口句柄 -current_window_handle 获取现在的窗口句柄 -元素定位:find_element_by_id('kw')