小白自学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()
相关推荐
大柏怎么被偷了20 小时前
【软件测试】测试的岗位有哪些?
软件测试·测试
革斤要加油6 天前
测试开发基础——软件测试中的bug
bug·测试
Amd79410 天前
使用 nuxi upgrade 升级现有nuxt项目版本
测试·开发·命令·升级·nuxt 3·nuxi·项目创建
bug菌¹14 天前
滚雪球学MyBatis-Plus(13):测试与部署
部署·测试·mybatis-plus·零基础入门教学
开测开测21 天前
day31-测试之性能测试工具JMeter的功能概要、元件作用域和执行顺序
测试开发·测试工具·jmeter·单元测试·压力测试·性能测试·测试
开测开测22 天前
day35-测试之性能测试JMeter的测试报告、并发数计算和性能监控
测试开发·测试工具·jmeter·压力测试·性能测试·测试·监控
small_snowball24 天前
三种自动化测试(接口自动化,UI 自动化,单元测试)保姆级教程
java-ee·测试
让开,我要吃人了25 天前
OpenHarmony实战开发: unittest单元测试的编写
linux·华为·log4j·移动开发·测试·harmonyos·鸿蒙
多则惑少则明1 个月前
软件测试第1章 软件测试是什么
测试·测试与质量保证
Serendipity_筱楠1 个月前
解决Pytest UnknownMarkWarning: Unknown pytest.mark.single - is this a typo?
python·pytest·测试