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

+ [七、常用自动化测试工具](#_292)
+ [八、JMeter性能测试](#JMeter_295)
+ [九、总结(尾部小惊喜)](#_298)

前言

安装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(万能,重点)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

y_partial_link_text

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

[外链图片转存中…(img-UvTmqXS6-1719254203281)]
[外链图片转存中…(img-BXz3xSHP-1719254203282)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值