自动化测试day01

  • 了解web自动化测试
  • 安装selenium
  • 了解8种定位方式

什么Web项目适合做自动化测试

  1. 需求变动不频繁
  2. 项目周期长
  3. 项目需要回归测试

web自动化开始阶段

手工测试之后(1,时间问题2,功能不完善)

自动化测试分类

  1. web自动化测试
  2. 移动自动化测试(app自动化)
  3. 接口自动化(工具、代码)
  4. 单元测试

selenium

  1. 开源、免费
  2. 跨平台(Linux,windows,mac)
  3. 支持多浏览器
  4. 支持多语言
  5. 成熟稳定
  6. 功能强大,支持商业化大部分功能,由于开源,可进行定制化需求功能

对pip进行升级:
python -m pip install --upgrade pip

selenium安装:
pip install selenium == 版本号
pip install selenium == 错误的版本号,会显示所有可安装的版本

元素定位依赖于

  • 标签名
  • 属性
  • 层级
  • 路径

定位方式

  • id
  • name
  • class_name(使用元素的class属性定位)
  • tag_name(标签名称<标签名…>)
  • link_text(定位超链接a标签)
  • partial_link_text(定位超链接a标签,模糊)
  • xpath(基于元素路径)
  • css(元素选择器)

基于元素属性特有定位方式:
id / name / class_name
基于元素标签名称定位:tag_name
定位超链接文本:
== link_text , pattial_link_text==
基于元素路径定位: xpath
基于选择器: css

id定位

语法:

driver.find_element_by_id(id)

from selenium import webdriver
from time import sleep
diver=webdriver.Chrome()
diver.get(url="")
diver.find_element_by_id("usera").send_keys("adn")#查找并输出
diver.find_element_by_id("password").send_keys("13432")
sleep(3)
diver.quit() 

name定位

语法:

driver.find_element_by_name(name)

#导包
from selenium import webdriver
from time import sleep
#获取浏览器对象
diver=webdriver.Chrome()
#打开url
diver.get(url="")

diver.find_element_by_name("usera").
send_keys("adn")#查找并输出

diver.find_element_by_name("password").send_keys("13432")

sleep(3)
diver.quit() 

class_name定位

语法:

driver.find_element_by_class_name(class_name)

tag_name定位

语法:

driver.find_selement_by_tag_name(“标签名”)
注:当有多个标签名时,默认返回符合要求的第一个标签

link_text定位

语法:

driver.find_element_by_link_text(link_text)
只能准确匹配超链接标签

partial_link_text模糊定位

语法:

driver.find_element_by_ partial_link_text (partial_link_text)
可以模糊匹配超链接文本,但必须是唯一模糊关键词
若没有使用唯一代表词,则默认返回符合条件的第一个元素

from selenium import webdriver
from time import sleep
diver=webdriver.Chrome()
diver.get(url="")
#精准匹配只含“新浪”的超链接标签
diver.find_element_link_text("新浪").
click()
#模糊匹配超链接中含有“新浪”的
diver.find_element_partial_link_text("新浪").click()

sleep(3)
diver.quit() 

xpath基于元素路径

语法:

driver.find_element_by_xpath(xpath).send_keys()

xpath定位策略
  1. 路径定位

1.绝对路径:以单斜杠开头逐级开始缩写,不能跳级
/html/body/div/p[1]/input
2.相对路径:以双斜杠开头,双斜杠后面跟元素名 称,不知元素名称可以使用*代替
//input
// *

  1. 路径结合属性

在Xpath中,所有属性必须使用@符合修饰
//*input[@id=id值]

  1. 路径结合逻辑(多个属性)

//*[@id=“id值” and @属性值=“属性值”]

  1. 路径结合层级

//*[@id=‘父级id属性值’] / input

注意:
1.一般见识使用指定标签名称,不使用 * 代替,效率比较慢
2.无论是绝对路径和相对路径,/后面必须为元素的名称或者 *
3.在工作中,如果能使用相对路径绝对不使用绝对路径

拓展:

  1. //*[text()=“文本内容”]
    据文本内容查找 一般适合p、a标签
  2. //*[contains(@type,“word”)]
    属性中含有xxx的元素
    contains为关键字,不可更改
  3. //*[starts-with(@id,“pass”)]
    以xxx开头的元素
    stars-with为关键字,不可更改

css定位

语法:

element=driver.find_element_by_css_selector()

css定位常用策略
  1. id选择器

语法:
#id
例:#password

  1. class选择器

语法:
.class
例:.class

  1. 元素选择器

语法:
element
例:input

  1. 属性选择器

语法
[属性名=属性值]

  1. 层级选择器

语法:
1.p>input
2.p input
注:>与空格的区别,大于号后必须是子元素,而空格可以跨级

拓展:

  1. [属性^=‘开头的字母’]
    获取指定属性以指定字母开头的元素
  2. [属性$="结束的字母’]
    获取指定属性以指定字母结束的元素
  3. [属性*=‘包含的字母’]
    获取指定属性中包含指定字母的元素

xpath与css类似功能对比

定位一组元素

语法:

driver.find_elements_by_xxx( )
返回结果:类型为列表,要对列表进行访问和操作必须指定下标或进行遍历[ 下标从0开始]

拓展
八种元素定位的底层实现:
语法:

driver.find_element(By.xxx,‘value’)
By.xxx: 为By类的类型 如:By.id
value: 元素的定位值 如:“password”

注:By类:需要导包:
from selenium.webdriver.common.by import By

元素操作方法:

send_keys()输入方法
click()点击方法
clear()清空

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值