UI自动化(一)

一、Selenium

Selenium是非常优秀的WEB(UI)自动化测试框架;selenium=WevbDriver+Selenium

最新的版本是Selenium4.x

Selenium支持主流的浏览器自动化测试,具体是Chrome,IE,Firefox等浏览器

Selenium也是支持主流的开发语言,如Python,Java,Net,PHP

二、环境搭建

1、google浏览器

A、安装Selenium的库,命令为:pip3 install selenium

B、按照Google浏览器

C、按照Google浏览器驱动

2、Chrome浏览器

A、安装Selenium的库,命令为:pip3 install selenium

B、按照Chrome浏览器

C、按照Chrome浏览器驱动

3、安装Chrome浏览器驱动

A、查看Chrome浏览器版本;

B、到淘宝源下载与浏览器匹配的Driver;

C、下载成功后,进行解压,并且以管理员身份执行;

D、把这个driver放到Python的安装目录下。

4、具体安装步骤

A、查看浏览器版本号


B、搜索淘宝源(网址为:https://registry.npmmirror.com/binary.html?path=chromedriver/)


C、选择距版本最接近的版本,点击进入,找到win文件,点击下载,得到压缩文件chromedriver_win32.zip

D、下载成功后解压,运行该文件chromedriver.exe。

E、运行成功后,将该文件复制入python-3文件夹里(python环境文件里)

 

三、WEB自动化测试(理论)

1、有关运行错误的问题

如果测试过程中出现问题,则是以下两点原因:

A、安装版本和浏览器版本不符合

B、安装环境有问题

2、有关面试问题

css与xpath的区别

css选择是依据页面的数据样式定位的,有标签选择, 类选择, id选择, 或者他们的交并集, 除此之外没有其他的辅助元素了;

而xpath是路径表达式,所有元素和内容都可以成为路径的一部分.

两种定位方式功能基本一致, 但是xpath明显更强大, 只是xpath写起来较复杂,css写起来容易些

3、元素属性(重点)

元素属性的方法有以下几种:

ID = "id":ID是不能为1的
NAME = "name"
CLASS_NAME = "class name"
XPATH = "xpath"
CSS_SELECTOR = "css selector"
LINK_TEXT = "link text":超链接
PARTIAL_LINK_TEXT = "partial link text":超链接,但是模糊搜索
TAG_NAME = "tag name"

注意:

操作浏览器是通过webdriver进行操作的,而因为webdriver操作浏览器的前提是需要定位到被操作的元素属性,之后就可以对浏览器做各种操作

4、查询元素属性的值

元素属性的具体数据需要查询,如图所示

5、元素属性css和xpath

当你使用id,那么,class_name都定义不到的时候,这时考虑使用css or xpath

其中:

Xpath的两种类型:

A、Copy full Xpath:/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input

B、Copy Xpath://*[@id="kw"]

css类型(一种)

Copy selector:#kw

6、元素定位的分类

1、单个元素定位

2、多个元素定位

A、多个元素定位指的是元素的属性都一致,

B、它返回的是列表,那么这时候可以根据列表的索引来定位元素属性

注意:

不管是单个元素定位还是多个元素定位,它的方法都是8种,具体见上文

7、多窗口的解决思路

A、先打开当前页面

B、然后获取当前页面放在一个变量中

C、打开新的页面

D、获取所有页面并且放在一个变量中

E、循环所有页面,判断如果不是当前,那么就是在新的页面

四、WEB自动化测试(实战)

前缀:类与time的调用

import time

from selenium import webdriver

1、测试指定网址

#指定浏览器
driver=webdriver.Chrome()
#对webdriver进行实例化,并指定测试网址
driver.get('http://www.baidu.com')
#休眠3秒
time.sleep(3)
#关闭浏览器
driver.quit()

2、元素属性ID

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素id进行定位,并输入内容‘zhangli’
driver.find_element_by_id('kw').send_keys('zhangli')
time.sleep(3)
driver.quit()

3、元素属性class_name

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素class_name进行定位,并输入内容‘zhangli’
driver.find_element_by_class_name('s_ipt').send_keys('zhangli')
time.sleep(3)
driver.quit()

4、元素属性name

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素name进行定位,并输入内容‘zhangli’
driver.find_element_by_name('wd').send_keys('zhangli')
time.sleep(3)
driver.quit()

5、元素属性Xpath

#第一种方法:Xpath
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素Xpath进行定位,并输入内容‘zhangli’
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('ZHANGLI')
time.sleep(3)
driver.quit()

#第二种方法:fullXpath
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素Xpath进行定位,并输入内容‘zhangli’
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys('zhangli')
time.sleep(3)
driver.quit()

6、元素属性css selector

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素css进行定位,并输入内容‘zhangli’
driver.find_element_by_css_selector('#kw').send_keys('zhangli')
time.sleep(3)
driver.quit()css selector

 7、元素属性:超链接link_text

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素link_text进行定位,并打开
driver.find_element_by_link_text('新闻').click()
time.sleep(3)
driver.quit()

8、元素属性:超链接(模糊)partial_link_text

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#对元素partial_link_text进行定位,并打开
driver.find_element_by_partial_link_text('图').click()
time.sleep(3)
driver.quit()

9、元素属性:tag_name

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#多个元素是调用属性时,需有后缀s
#对元素partial_link_text进行定位,并进行赋值
#提取所有的input,并放入集合里
tags=driver.find_elements_by_tag_name('input')
#通过索引调用第七条数据
tags[7].send_keys('无涯 接口测试')
time.sleep(3)
driver.quit()

10、获取测试地址:current_url(获取网址)

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
#关键字:current_url
print(driver.current_url)
time.sleep(3)
driver.quit()

11、获取当前页面代码:page_source(获取页面代码)

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
print(driver.current_url)
#判断
assert driver.current_url.endswith('baidu.com/')
time.sleep(3)
driver.quit()

12、获取页面的title

 

posted @ 2022-04-06 18:36  无耿  阅读(89)  评论(0编辑  收藏  举报