web自动化测试环境搭建+元素定位

web自动化测试

⾃动化测试理论

  • UI:User Interface(⽤户接⼝-⽤户界⾯),主要包括:app、web
  • ui⾃动化测试:使⽤⼯具或代码执⾏⽤例的过程
  • 什么样的项⽬适合做⾃动化:

1、需要回归测试项⽬(甲⽅⾃营项⽬、⾦融、电商)

2、需求变动不频繁:稳定的模块

3、项⽬周期⻓的项⽬:(甲⽅⾃营项⽬、6个⽉以上的外包)

⾃动化测试⼯具及环境

⼯具说明

  • QTP:商业、收费、⽀持UI
  • robot Framework:python扩展库、使⽤封装好的关键字驱动、半代码⽔平、
    ⽀持UI
  • selenium:开源、免费、主流 ⽀持UI

selenium介绍

环境搭建

pthon解释器+pycharm+selenium+浏览器+浏览器驱动

  • selenium
python 复制代码
pip install selenium
  • 浏览器驱动
python 复制代码
chrome: http://npm.taobao.org/mirrors/chromedriver/
提示:浏览器驱动⼤版本必须和浏览器版本⼀致。


下载链接: https://googlechromelabs.github.io/chrome-for-testing/

windows:

1、解压下载的驱动,获取到chromedriver.exe

2、将chromedriver.exe复制到python.exe所在⽬录即可(避免再次将chromedrver.exe

添加path变量)
mac:

1、解压下载的驱动,获取到chromedriver

2、将chromedriver复制到/usr/local/bin⽬录即可。

元素定位

元素定位⽅法

1、id

2、name

3、class

4、tag_name

5、link_text

6、partial_link_text

7、xpath

8、css

元素定位步骤

1、打开⾕歌浏览器(实例化)

2、输⼊url

3、找元素及操作

4、关闭浏览器

python 复制代码
from time import sleep
from selenium import webdriver
# 1、打开⾕歌浏览器(实例化浏览器对象)
driver = webdriver.Chrome()
# 2、输⼊url
driver.get("http://tpshop-test.itheima.net/Home/user/login.html")
# 3、找元素及操作
# 4、关闭浏览器
sleep(3)
driver.quit()

3.1 id定位

方法:driver.find_element(by=By.ID, value="id值")

前置:标签必须有id属性

输入方法:元素.send_keys("内容")

python 复制代码
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

# 1、获取浏览器
driver = webdriver.Chrome()
# 2、打开url
driver.get("file:///D:/Chrome/%E6%B3%A8%E5%86%8CA.html")
# 3、查找操作元素
# 用户名 -> id ->driver.find_element_by_id("id")
# 元素.send_keys()输入方法
# driver.find_element_by_id("userA").send_keys("admin")
driver.find_element(by=By.ID, value="userA").send_keys("admin")

# # 密码
# driver.find_element_by_id("passwordA").send_keys("123456")
driver.find_element(by=By.ID, value="passwordA").send_keys("123456")


# 4、关闭浏览器
sleep(5)
driver.quit()

3.2 name定位

driver.find_element(by=By.NAME, value="name属性值")

前置: 标签必须有name属性

特点: 当前页面可以重复

提示: 由于name属性值可以重复,所以使用时需要查看是否为唯一。

python 复制代码
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

# 1、获取浏览器
driver = webdriver.Chrome()
# 2、打开url
driver.get("file:///D:/Chrome/%E6%B3%A8%E5%86%8CA.html")
# 3、查找操作元素
# 用户名 -> name
# 元素.send_keys()输入方法
driver.find_element(by=By.NAME, value="userA").send_keys("admin")
# 密码
driver.find_element(by=By.NAME, value="passwordA").send_keys("123456")
# 电话 -> class
driver.find_element(by=By.CLASS_NAME, value="telA").send_keys("18611111111")
# driver.find_element_by_class_name("c3").send_keys("123@163.com")

# 4、关闭浏览器
sleep(3)
driver.quit()

说明:根据链接文本(a标签)进行定位

方法:driver.find_element(by=By.LINK_TEXT, value="链接文本")

特点:传入的链接文本必须全部匹配,不能模糊匹配。
需求:

打开注册A.html页面,完成以下操作

1).使用link_text定位(访问 网易 网站)超链接,并点击

2).3秒后关闭浏览器窗口

python 复制代码
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

# 1、获取浏览器
driver = webdriver.Chrome()
# 2、打开url
driver.get("file:///D:/Chrome/Register.html")
# 3、查找操作元素
driver.find_element(by=By.TAG_NAME, value="input").send_keys("admin")
"""
    需求:点击注册页面的 新浪
    点击:元素.click()
"""
# link_text 全部值
driver.find_element(by=By.LINK_TEXT, value="网易").click()

# partial_link_text  模糊匹配
# driver.find_element(by=By.PARTIAL_LINK_TEXT, value="网").click()

# 4、关闭浏览器
sleep(10)
driver.quit()

3.4 tag_name定位

说明:根据标签名进行定位

方法:driver.find_element(by=By.TAG_NAME, value="标签名")

提示: 如果⻚⾯存在多个相同标签,默认返回第⼀个。
需求:

打开注册A.html页面,完成以下操作

1).使用tag_name定位用户名输入框,并输入:admin

2).3秒后关闭浏览器窗口

python 复制代码
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

# 1、获取浏览器
driver = webdriver.Chrome()
# 2、打开url
driver.get("file:///D:/Chrome/%E6%B3%A8%E5%86%8CA.html")
# 3、查找操作元素
driver.find_element(by=By.TAG_NAME, value="input").send_keys("admin")


# 4、关闭浏览器
sleep(3)
driver.quit()

3.5 拓展:查找一组元素

说明:返回列表格式,要使用需要添加下标或遍历。

方法:driver.find_elements(by=By.XXXX, value="xxx")

提示:八大元素定位方法都可以使用一组元素定位。如果没有搜索到符合标签,返回空列表。

python 复制代码
"""
    需求:使用定位一组元素的方法+tag_name 将注册a页面所有信息进行填写。
"""
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

# 1、获取浏览器
driver = webdriver.Chrome()
# 2、打开url
driver.get("file:///D:/Chrome/%E6%B3%A8%E5%86%8CA.html")
# 3、查找操作元素

# 查找所有的input标签
inputs = driver.find_elements(by=By.TAG_NAME, value="input")
inputs[0].send_keys("admin")
inputs[1].send_keys("123456")
inputs[2].send_keys("13800001111")
inputs[3].send_keys("123@qq.com")



# for input in inputs:
#     input.send_keys("admin")

# 4、关闭浏览器
sleep(3)
driver.quit()
相关推荐
专注API从业者42 分钟前
告别人工盯品!借助 Open Claw 搭建电商商品自动化监控与数据分析系统(完整可运行源码)
大数据·运维·数据库·数据分析·自动化
weixin_403810131 小时前
AI智能体写安卓自动化脚本教程:Cursor/Trae+CLI 实战,自然语言生成代码
android·人工智能·自动化·跨境电商·安卓自动化脚本·多账户运营
IT大白鼠2 小时前
PentestGPT作为AI运维编排工作流自动化底座的技术架构与应用价值评估
运维·人工智能·自动化·pentestgpt
zzzll11113 小时前
n8n 工作流自动化平台入门指南
运维·自动化
HXDGCL4 小时前
从“转盘困局”到“直线破局”:华创力科技PTS精密分度输送系统如何重塑自动化产线
运维·科技·自动化
戴西软件5 小时前
国内有哪些智能化RPA工具?——从“录数据”到“做判断”,国产数字员工正在重新定义自动化
运维·自动化·rpa
weixin_403810136 小时前
iOS免越狱自动化三种方式对比:代理模式、蓝牙HID与OTG HID怎么选
ios·自动化·跨境电商·ios脚本·苹果群控·苹果投屏·苹果脚本
跨境小彭6 小时前
Temu半托管运营复盘:批量备货自动化实操解决方案
大数据·运维·自动化·跨境电商·temu
天远数科7 小时前
零信任架构实战:基于天远二手车VIN估值构建自动化汽车数据网关
人工智能·架构·自动化·汽车
测试19987 小时前
Selenium 无法定位元素的几种解决方案
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例