小白自学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()
相关推荐
bytebeats21 小时前
在Kotlin中编写依赖于时间的可测试协程代码
android·kotlin·测试
越学不动啦3 天前
三、概念篇+Bug篇
bug·测试·软件测试入门·bug测试
niuniu_6666 天前
Selenium 性能测试指南
selenium·测试工具·单元测试·测试·安全性测试
freejackman6 天前
Selenium框架——Web自动化测试
python·selenium·测试
有时间要学习6 天前
Test——BUG篇
bug·测试
大话性能7 天前
Python开发请不要用 + 号拼接字符串了
测试
niuniu_6667 天前
安全性测试(Security Testing)
测试工具·单元测试·appium·测试·安全性测试
niuniu_6667 天前
selenium应用测试场景
python·selenium·测试工具·单元测试·测试
俞凡8 天前
如何编写更好的单元测试
单元测试·测试
Apifox8 天前
Apifox 3月更新|发布/分享的API文档全面升级、支持MCP、支持调试Ollama本地部署AI大模型接口、新增「鉴权组件」
前端·后端·测试