全网最牛,Web自动化测试Selenium八大元素定位实战(详细)


前言

安装Selenium和下载Driver

安装selenium,使用国内源快速下载

pip3 install  selenium -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

下载Driver
打开:http://npm.taobao.org/mirrors/chromedriver/

找到自己Chrome对应的版本下载即可

例子:访问百度

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time

from selenium import webdriver

# 加载浏览器驱动
driver = webdriver.Chrome("../resources/chromedriver.exe")

# 访问网址
driver.get("http://www.baidu.com")

# 找到搜索框
inputElement = driver.find_element_by_id("kw")

# 输入搜索内容
inputElement.send_keys("NBA总决赛")

# 找到搜索按钮
searchElement = driver.find_element_by_id("su")

# 点击搜索按钮
searchElement.click()

time.sleep(5)

# 释放资源, 退出浏览器
driver.quit()

可以看到,流水账式写Web自动化测试代码的顺序就是:加载驱动 - 访问链接 - 页面操作

先将一个测试html保存到本地,后续案例就按照这个页面来演示
代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>八大定位测试演示</title>
</head>
<body>

<a>用户名:</a>
<input id="username" class="username">
<a>密码</a>
<input id="password" name="password">
<button class="login">登录</button>
<br>
<p>测试啦</p>
<p>再一次测试啦</p>
<br>
<a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-202s0"
   class="mnav sp dot">终极抗击肺炎啊</a>
<a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-2020"
   class="mnav sp dot">抗击肺炎</a>
<a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-202s0"
   class="mnav sp dot">抗击肺炎</a>

<div>
    <ul>
        <li class="li">111</li>
        <li class="li">222</li>
        <li class="li">333</li>
    </ul>
    <ul>
        <li>aaa</li>
        <li>bbb</li>
        <li>ccc</li>
    </ul>
</div>
</body>
</html>

方式1:通过元素的id

# 找到id = username的元素
username = driver.find_element_by_id("username")
# 输入值 张三
username.send_keys("张三")
# 找到od = password的元素
password = driver.find_element_by_id("password")
# 输入值 123
password.send_keys("123")

在前端,一般一个id值是唯一的,只属于一个元素

方式2:通过元素的class

# =====通过 元素Class查找(仅返回匹配到的第一个)
login_btn = driver.find_element_by_class_name("login")

# 点击
login_btn.click() 

在前端,一般多个元素共用一个class
但 find_element_by_class_name 只返回第一个匹配到class的元素

坏处:当找不到元素则报错
如果想返回所有匹配到class的元素,可看下面代码

# =====找到所有class=li的元素
lis = driver.find_elements_by_class_name("li")
for i in lis:
    print(i.text)

执行结果

111
222
333

返回的是一个元素列表,若只匹配到一个也是列表
好处:当没有找到元素时不会报错,而是返回空列表 []

方式3:通过元素的name

# =====通过 元素name查找元素(仅返回匹配到的第一个)
password = driver.find_element_by_name("password")

# =====输入值 123
password.send_keys("123")

和class一样,也有可能有多个元素共用一个name
但 find_element_by_name 只返回第一个匹配到name的元素
想返回多个的话,和class一样,需要调用 find_elements_by_name 方法,这里不再赘述,写法和上面一致(已标红)

方式4:通过元素标签

# =====通过 元素标签(仅返回匹配到的第一个)=====
p = driver.find_element_by_tag_name("p")
# 打印元素的文本值
print(p.text)

print("===")
# =====通过 元素标签(返回匹配到的所有元素)=====
ps = driver.find_elements_by_tag_name("p")
for p in ps:
    print(p.text)

执行结果

测试啦===
测试啦
再一次测试啦

多个元素同种HTML标签见怪不怪了
同样的, find_element_by_tag_name 返回第一个匹配到标签的元素
find_elements_by_tag_name 可以返回所有匹配到标签的元素

方式5:通过超链接文本

# =====通过 超链接的文本查找元素(仅支持精确匹配)
atext = driver.find_element_by_link_text("抗击肺炎")
print(atext.text)

print("===")
ass = driver.find_elements_by_link_text("抗击肺炎")
for i in ass:
    print(i.text)

执行结果

抗击肺炎===
抗击肺炎
抗击肺炎

find_element_by_link_text 是精确匹配,需要文本完全相同才能匹配
若需要返回全部匹配到的元素,也需要用 find_elements_by_link_text

方式6:通过超链接文本(模糊匹配)

# =====通过 超链接的文本查找元素(支持模糊匹配)
atext = driver.find_element_by_partial_link_text("肺炎")
print(atext.text)

print("===")
ass = driver.find_elements_by_partial_link_text("肺炎")
for i in ass:
    print(i.text)

执行结果

终极抗击肺炎啊
===
终极抗击肺炎啊
抗击肺炎
抗击肺炎

find_element_by_partial_link_text 支持模糊匹配,包含文本则匹配成功
若需要返回全部匹配到的元素,也需要用 find_elements_by_partial_link_text

方式7:通过xpath(万能,重点)

# ====通过 xpath
lis = driver.find_element_by_xpath("/html/body/div/ul[2]/li[1]")
print(lis.text)

执行结果

aaa

注意: xpath 包含的知识点很多,后续有时间再补充

方式八:通过css选择器(万能,重点)

# ====通过css选择器
lis = driver.find_element_by_css_selector("body > div > ul > li:nth-child(2)")
print(lis.text)

执行结果

222
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

努力不是一时的燃烧,而是为了点亮心中的星空。坚持追逐梦想,拥抱挑战的勇气,才能收获成就的喜悦和生命的价值。与困难搏斗,奋发向前,让我们的努力绽放出最耀眼的光芒。

只有不甘平庸的燃烧,才能成就辉煌的人生航程。与梦想为伴,奋斗努力,每一步都是向成功迈进的脚印。不忘初心,勇往直前,只有拼尽全力,方能谱写出绚烂的人生乐章。

只有勇敢面对挑战,才能开创自己的辉煌人生。不要害怕失败,因为失败是成功的基石,只要坚持努力,成功将会属于你。相信自己,无限可能等待着你去探索。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium IDE是一款用于Web自动化测试的浏览器插件。它可以记录和回放用户在浏览器中的操作,以便进行自动化测试。以下是使用Selenium IDE进行Web自动化测试的步骤: 1. 安装Selenium IDE插件:在浏览器的插件商店中搜索Selenium IDE,并安装到浏览器中。 2. 打开Selenium IDE:在浏览器中点击Selenium IDE插件的图标,打开Selenium IDE。 3. 录制测试用例:点击Selenium IDE界面上的录制按钮,开始录制测试用例。在浏览器中进行各种操作,例如点击链接、填写表单等。 4. 停止录制:完成测试用例的录制后,点击Selenium IDE界面上的停止按钮,停止录制。 5. 回放测试用例:点击Selenium IDE界面上的回放按钮,Selenium IDE会自动执行之前录制的测试用例,并在浏览器中模拟用户的操作。 6. 断言和验证:在测试用例中可以添加断言和验证,以确保测试结果的准确性。例如,可以验证页面上的某个元素是否存在,或者断言某个元素的文本内容是否符合预期。 7. 导出测试用例:完成测试用例的录制和回放后,可以将测试用例导出为不同的格式,例如HTML、Java、Python等,以便在不同的环境中执行测试用例。 请注意,Selenium IDE是一款简单易用的工具,适合初学者进行简单的Web自动化测试。如果需要进行更复杂的测试,可以考虑使用Selenium WebDriver,它提供了更多的功能和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值