小白自学python+selenuim软件测试之路保姆级教学(二)

背景:从0开始学习自动化测试,找一个薪资10k+的工作 分享一下自己学习的过程以及遇到的疑难杂症

第一节我们讲述了如何配置环境,如果环境没有配置的同学,请先配置环境

简单上手初体验自动化测试

一、解决刚打开浏览器闪退问题

安装好环境之后我迫不及待的试了一把,用下面这段代码发现浏览器确实打开了,但是又立即关闭了。(闪退)

python 复制代码
# 从selenium中导出 webdriver
from selenium import webdriver
driver = webdriver.Chrome()
# 打开浏览器并访问url
driver.get("https://www.baidu.com")

经过探索为webdriver加上了option,值为detach:True,解决了 闪退问题。

python 复制代码
# 从selenium中导出 webdriver
from selenium import webdriver
driver = webdriver.Chrome()
option = webdriver.ChromeOptions()
# 为浏览器添加配置,不立即关闭
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=option)
# 访问url链接
driver.get("https://www.baidu.com")

二、seleinum获取元素的方法及用法

下面我们要了解一下selenium中获取页面元素的几种常用的方法: 该部分内容需要具有一点前端知识,知道如何找到元素,不懂也没关系,我来快速教你

每个页面都是由很多个标签组成的,这些标签我们也称之为元素。 我以百度的首页为大家举例讲解。 找元素的步骤:

2.1打开控制台

打开之后按f12,或者快捷键 【Ctrl+shift+C】 再或者右击点击【检查】。会弹出开发者控制台,(mac版没有f12的,先按住左下角fn,touch Bar 上会出现f12点击即可),打开控制台之后点击【Elements/元素】我们会看到如下界面。

上面的<div> <head> <body>就是标签,也就是元素。那么我们如何找到我们想要的元素呢?请接着往下看。

2.2找元素

我们打开控制台之后,会看到控制台左上角有一个箭头的按钮,没错就是它,点击一下变蓝之后就可以找元素了。我们也可以打开控制台之后按【Ctrl+shift+C】打开找元素按钮。

当然上图中的<input>中的 id、class等属性不一定是每个标签都会有的,那如果元素没有这几个属性我们该如何通过selenium来定位元素呢? 接下来邀请我们的获取元素的终极大招XPATH登场 鼠标放到你定位到的元素上,然后右键单击,点击copy,点击copy XPath就可以了~ 具体怎么用,客观请往下面看!

这里我通过不同的方式来获取【百度一下】这个按钮,别的不说,代码展示 列举几个比较常用的,其他的可以自行搜索一下用法。

  1. 通过id获取元素:

    python 复制代码
    element = driver.find_element_by_id('su')
  2. 通过class name获取元素:

    python 复制代码
    element = driver.find_element_by_class_name('s_btn')

3.通过name获取元素:

python 复制代码
 # 因为百度一下这个标签没有name属性,我就用name代替了,找到一个带name属性的标签,替换一下
element = driver.find_element_by_name('name')
  1. 通过XPath获取元素:
python 复制代码
    element = driver.find_element_by_xpath('//*[@id="su"]')

三、自动化测试实战

以百度的搜索举例: 我们在输入框里输入优酷,点击搜索后,找到优酷的元素,如果找到证明这条测试用例通过,找不到用例失败

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By


option = webdriver.ChromeOptions()
# 为浏览器添加配置,不立即关闭
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=option)
# 访问url链接
driver.get("https://www.baidu.com")
# 隐式等待  访问页面时可能加载过慢,导致不能立即获取到元素,可以等待30s来等待加载
driver.implicitly_wait(30)
# 获取输入框元素
inputweb = driver.find_element(By.XPATH, '//*[@id="kw"]')
# 给输入框输入值
inputweb.send_keys("优酷")
# 获取搜索的按钮
btn = driver.find_element(By.XPATH, '//*[@id="su"]')
# 点击按钮搜索
btn.click()
try:
    # 找到优酷的元素
    ele = driver.find_element(By.XPATH, '//*[@id="1"]/div/div[1]/h3')
    print(ele)
    # 设置断言,点击后肯定会找到这个元素,如果为空,就是没有通过
    assert ele != None
    print('测试通过')
except Exception:
    print('这里出错了')
# 运行完毕后把进程清除掉
driver.quit()
相关推荐
LabVIEW开发2 天前
CTM-3 红外测温仪 + LabVIEW 温度怎么测?
算法·labview·测试·labview程序
用户766918404482 天前
告别 F12 与 Charles:如何打造一款「懂业务」的浏览器原生抓包利器?
测试
LabVIEW开发2 天前
CMT 矢量网络分析仪 + LabVIEW 测S参数?
labview·测试·labview程序
flash俊杰3 天前
pdf.js detach 血案:structuredClone transfer 如何吃掉你的 ArrayBuffer
测试
狂师3 天前
GitHub上开源真机测试工具mobile-mcp,说句话就能让AI在手机上跑用例!
人工智能·开源·测试
三翼鸟数字化技术团队4 天前
测试人员代码阅读实战指南
测试
得物技术4 天前
Jev 实战:为AI工作流引入轻量决策层 x10倍提速|得物技术
python·llm·测试
挖掘狂人4 天前
AI 代码上线前,真正的瓶颈不在 "写",而在 "验"
ai编程·测试·代码规范