以下使用的浏览器皆为谷歌
简短介绍
Selenium | Cyress | Playwright | |
---|---|---|---|
浏览器兼容 | 几乎所有 | 仅Chrom/Firefox | 仅Chrom/Firefox/Safari |
多标签/多窗口 | 支持 | 不支持 | 支持 |
创建测试速度 | 快 | 不支持 | 快 |
用户行为 | 支持 | 少量支持 | 支持 |
并行架构 | 自建 | 付费 | 自建 |
速度 | 一般 | 很快 | 很快 |
调试 | 不方便 | 方便 | 方便 |
文档 | 丰富 | 一般 | 一般 |
cypress用js在浏览器里去写代码执行测试
cypress一般用于前端
cypress和playwright测试浏览性兼容性就很受限
只打算测试谷歌浏览器考虑playwright
所有语言,APP,web端测试都可以用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
下载浏览器驱动之前,需要查到自己的谷歌浏览器版本如下图:
查到浏览器版本,进入下载页面点击下载相应版本浏览器驱动只用前三个一样就行如:我的谷歌浏览器版本是110.0.5481.178则我只需要找到110.0.5481的浏览器驱动下载就行
电脑是Windows则下载win32 ,若Linux则Linux64,若mac则Mac64
win32点击打开
对于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版本)