自动化测试笔记第一次

自动化测试笔记

以下使用的浏览器皆为谷歌


主流自动化测试

简短介绍

Selenium Cyress Playwright
浏览器兼容 几乎所有 仅Chrom/Firefox 仅Chrom/Firefox/Safari
多标签/多窗口 支持 不支持 支持
创建测试速度 不支持
用户行为 支持 少量支持 支持
并行架构 自建 付费 自建
速度 一般 很快 很快
调试 不方便 方便 方便
文档 丰富 一般 一般

cypress用js在浏览器里去写代码执行测试

cypress一般用于前端

cypress和playwright测试浏览性兼容性就很受限

只打算测试谷歌浏览器考虑playwright

所有语言,APP,web端测试都可以用selenium

安装selenium

1.安装selenium

pip install -i https://pypi.douban.com/simple selenium==3.141.0
#从cmd中下载打开cmd可以用wind+R键,这里限定了下载selenium的版本可以根据自己需要下载任意版本
pip show selenium
#这句可以查看是否安装成功

2.使用selenium,如控制谷歌浏览器。从selenium中导入一个浏览器驱动from selenium import webdriver
启动浏览器driver = webdriver.chrom()
控制浏览器访问百度driver.get(“https://baidu.com”)

from selenium import webdriver

driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://www.baidu.com')#控制浏览器访问百度
input()#暂时不执行下一步
driver.quit()#关闭浏览器

安装浏览器驱动

在引入selenium之前我还下载了一个浏览器驱动(chromedriver.exe)

下载网址:https://chromedriver.storage.googleapis.com/index.html

下载浏览器驱动之前,需要查到自己的谷歌浏览器版本如下图:

自动化测试笔记第一次_第1张图片

查到浏览器版本,进入下载页面点击下载相应版本浏览器驱动只用前三个一样就行如:我的谷歌浏览器版本是110.0.5481.178则我只需要找到110.0.5481的浏览器驱动下载就行

自动化测试笔记第一次_第2张图片

自动化测试笔记第一次_第3张图片

电脑是Windows则下载win32 ,若Linux则Linux64,若mac则Mac64

win32点击打开

自动化测试笔记第一次_第4张图片

对于chromedriver.exe的处理有两个方式:

1.直接将chromedriver.exe粘贴复制到你所编写的控制浏览器的文件里

2.将chromedriver.exe放到PyCharm文件同一个目录下

注:建议第二种,第一种弄了下次若还需要浏览器驱动则需要重新粘贴复制

3.关掉浏览器driver.quit()

:我运行启动浏览器的代码还是会报找不到selenium的错误,但是cmd查询已安装。解决方式在PyCharm中重新安装了selenium

步骤:在Terminal中输入pip install -i https://pypi.douban.com/simple selenium

要在联网状态下安装selenium

最初小操作

需要保留启动浏览器的记录

在打开百度之后加入driver.get_screenshot_as_file(“a_访问百度.png”)

from selenium import webdriver

driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://www.baidu.com')
driver.get_screenshot_as_file("a_访问百度.png")#只支持png格式
driver.quit()

运行结束上述代码,在你所创建的文件里有一张png格式的图片

测试最大化窗口

from selenium import webdriver

driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://www.baidu.com')
driver.maximize_window()#最大化窗口
driver.get_screenshot_as_file("a_百度最大化窗口.png")

driver.quit()

读取网页标题

结果显示如:标题 百度一下,你就知道

driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://www.baidu.com')
#driver.maximize_window()
#driver.get_screenshot_as_file("a_百度最大化窗口.png")
title = driver.title
print("标题",title)

driver.quit()

读取网页源代码

driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://www.baidu.com')
html = driver.page_source
print("网页源码",html)
driver.quit()

小结:对浏览器的控制,通过webdriver对象

​ 对网页内容的控制,通过webElement对象

​ 元素定位实际上是通过webdriver对浏览器控制再获得webElement的过程

元素定位

selenium提供八个定位策略

定位器 描述
id 定位id属性与搜索值匹配的元素
name 定位name属性与搜索值匹配的元素
tag name 定位标签名称与搜索值匹配的元素
class name 定位class属性与搜索值匹配的元素(不允许使用复合类)
link text 定位link text可视文本与搜索值完全匹配的锚元素
partial link text 定位link text可视文本与搜索值部分匹配的锚元素(模糊匹配)
xpath 定位于XPath表达式匹配的元素
css selector 定位CSS选择器匹配的元素

基于属性的定位

这是百度搜索框的源码

<input 
       id="kw" 
       name="wd"
       class="s_ipt" #input id name class这四个是seleniu能够定位的属性
       value="" 
       maxlength="255" 
       autocomplete="off"
       >

id对应id name对应name input对应tag name class对应class name

from selenium import webdriver
from selenium.webdriver.common.by import By#引入By

driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://www.baidu.com')
el_1 = driver.find_element(By.ID,"kw")
print(el_1)
el_1 = driver.find_element(By.CLASS_NAME,"s_ipt")
print(el_1)
el_1 = driver.find_element(By.NAME,"wd")
print(el_1)
el_1 = driver.find_element(By.TAG_NAME,"input")
print(el_1)

driver.quit()

By那里会出错记得引入By

基于文本的定位

当无属性,有文本时

el_1 = driver.find_element(By.LINK_TEXT,"文本")
print(el_1)#精准定位

el_1 = driver.find_element(By.PARTIAL_LINK_TEXT,"文本")
print(el_1)#模糊定位

小红很漂亮(这里是文本)

注:基于文本的定位有局限性那就是只能定位链接

基于表达式的定位

css selector 定位CSS选择器匹配元素

Xpath 定位xpath选择器匹配元素

xpath比css selecto好用。原因:xpath是文本查询语句,天生兼容html;xpath很好的根据文档层级进行定位;支持灵活的语法和函数,完成定位

自动安装浏览器驱动

下载webdriver_helper安装包到pycharm,在pychram文件中复制路径,在Terminal里写pip install webdriver_helper路径

from webdriver_helper import get_webdriver

#driver = webdriver.Chrome()
driver = get_webdriver()#自动下载浏览器驱动之后,自动的启动浏览器
driver.get('https://www.baidu.com')

driver.quit()

webdriver_helper:1、自动获取浏览器的版本、操作系统类型
2、自动下载浏览器驱动
3、自动创建和返回WebDriver对象

注:此时可能会安装失败显示pip需要更新。解决方法:更新pip python3 -m pip install --user --upgrade pip

我用这个语句没有成功更新pip,我是将python3改成python3.8的路径才更新成功,就是直接复制的软件给的解决方法的那串话。

后面又报我的python版本与webdriver_helper版本不匹配

解决方式:用pip debug --verbose查看当前python版本适用的whl版本重新下载webdriver_helper(该方法我没用好,因为我找不到适用当前python版本的whl版本)

hon3 -m pip install --user --upgrade pip

我用这个语句没有成功更新pip,我是将python3改成python3.8的路径才更新成功,就是直接复制的软件给的解决方法的那串话。

后面又报我的python版本与webdriver_helper版本不匹配

解决方式:用pip debug --verbose查看当前python版本适用的whl版本重新下载webdriver_helper(该方法我没用好,因为我找不到适用当前python版本的whl版本)

你可能感兴趣的:(chrome,python,单元测试,selenium)