第八次
Selenium介绍:
目前业内最主流的自动化测试技术是Selenium。
Selenium最为主流的版本,目前的Selenium 3 版本。
早期自动化测试领域,最为著名的叫QTP/UFT/(已淘汰)
自动化测试其本质是为了尽可能的模拟到实际用户的使用习惯,来对软件进行自动化操作,Selenium的核心是基于JS来实现的
Selenium 1版本 基于Selenium IDE实现的自动化测试
以前Selenium作为Firefox浏览器插件的形式存在,且录制的脚本不便于维护,应用也不灵活,无法作为拓展浏览器,并发等一系列更为优化的使用行为,最关键的是Google公司成为最大的使用者
Selenium 2版本,基于Selenium IDE+WebDriver,是决定了Selenium作为测试半壁江山最为关键的版本
Selenium 3版本,纯粹的Selenium+WebDriver,是目前业内唯一顶尖的自动化测试技术(目前是使用的最热)
Selenium 4版本,还是处于Alpha阶段,在2020年7月到8月左右,更新了新的版本,Selenium IDE4版本
目前主流的模块是Selenium+WebDriver
Selenium:一个模块(工具库)
WebDriver:浏览器驱动
主流的浏览器基于浏览器内核分为五大类浏览器
Chrome:ChromeDriver
FireFox:GeckoDriver
IE:IEDriver和IEDriverServer
运行机制
核心:就是运行机制HTTP网络协议下的
chromedrive.exe文件,点击运行即可看到
ChromeDriver版本的查找地址 http://npm.taobao.org/mirrors/chromedriver/
打开网址后,先看自己电脑上的Chrome的版本,去下载对应的ChromeDriver的版本,注意!区分MAc笔记本和Windows笔记本,这里的ChromeDriver不区分ChromeDriver的位数(32位操作系统或者64位操作系统)
Selenium+WebDriver环境部署:
WebDriver:
下载对应的版本,解压后,将exe文件放到python的安装根路径下,就可以正常使用(前提条件是,使用的Chrome浏览器是默认路径下安装的才可以)
Mac则同理,建议放到pycharm默然安装路径下的bin目录下(我是是使用的Anaconda作为管理,所以我的Chromedriver的路径如下)路径:/Users/hello/opt/anaconda3/bin
额外知识点:Pycharm的虚拟环境和实际环境
实际环境:直接读取本地的库,所有的工程用到的模块版本都是一致的
虚拟环境:不同的工程有不同的空间,在每一个工程中都可以选择不同的版本模块进行安装。(多版本的适配,可以使用虚拟环境)
默认创建的虚拟环境,要注意,如果使用实际环境,要注意转移代码的时候,可能会存在一些包不见了的情况。
#导包Selenium
from selenium import webdriver
#创建webdriver,生成浏览器对象
driver = webdriver. Chrome()
#访问URL
driver.get( 'http://www. baidu.com')
#输入内容:找到页面元素,对其进行输入文本的操作
input_= driver.find-element_by_name('wd')
input_.send-keys ( '茅十八')
#点击一个元素:找到页面元素,对其进行点击操作
button = driver.find_element_by_id ('su')
button.click()
代码升级–通过原码(底层的webdriver)实现以上通过Selenium实现的自动化操作
通过指令的下发,command
#导入webdriver包
from selenium.webdriver.chrome.webdriver import WebDriver from selenium.webdriver.common. by import By
# driver = webdriver.Chrome()
wb = WebDriver(executable-path="chromedriver"")
# driver.get('http://www.baidu. com')
wb.execute( 'get', {'url': 'http://www.baidu.com'})
#元素定位与操作
# input = driver.find-element_by_name ('wd') el = wb.execute('findElement',t 'using': By.XPATH,
'value' : '//input [aid="kw"]'}) ['value']
print(el)
# input-.send_keys ('茅十八')
el. execute('sendKeysToELement'
text': '茅十八.
Ivalue':
})
# button = driver.find-element-by id('su")
el1 = wb.execute( 'findElement',
'using": By.XPATH,
'value' : '//input [@id="su"]'}) ['value']
# button.click()
el1.execute('clickElement')