UI自动化-(web元素定位基础)

1.1 元素的基本概念

  • 元素: 由标签头+标签尾+标签头和标签尾包括的文本内容
  • 元素的信息:元素的标签名以及元素的属性
  • 元素的层级结构:元素之间相互嵌套的层级结构
  • 元素定位:通过元素的信息或者元素的层级结构来进行元素定位。

    e9001da755dbfb2a3c41481cd9182c0a.png

1.2 浏览器开发者工具

    • 1.点击 浏览器开发者工具左上角的  元素查看器按钮
    • 2.点击需要查看的元素
    • 26883f596b964cdd8d82a37d8676bfd2.png

1.3 web元素定位的常用方式

  • 通过ID进行定位:
    • 使用元素的 ID 属性进行定位
  • 通过name进行定位:
    • 使用元素的name属性进行定位
  • 通过class_name进行定位:
    • 使用元素的类属性进行定位
  • 通过tag_name进行定位:
    • 使用元素的标签信息进行定位
  • link_text定位:
    • 通过超链接的全部文本信息进行元素定位
  • partail_link_text定位:
    • 通过超链接的局部文本信息进行元素定位
  • 在页面当中,有一些元素无法通过元素的信息精准的定位到,所以需要借助于Xpath或CSS进行定位
    • XPath定位:XPath 是一种用于在 XML 或 HTML 文档中定位元素的语言。它可以使用路径表达式来定位特定元素。例如,"/html/body/a"可以定位到 HTML 文档中 body 标签下的第一个 a 标签。
    • CSS定位:CSS(Cascading Style Sheets)是一种用于描述网页样式的语言。它的主要作用是分离网页的内容和样式,使得网页开发者可以更方便地维护和更新网页样式。使用CSS可以帮助用户准确的定位到特定元素。

1.3.1 通过ID进行定位

  • 元素有ID属性,可以通过元素的ID属性值来进行元素定位【遵循html标准规范的代码 ID值是唯一的
  • 定位方法:  find_element_by_id(id)     # 括号中 id 参数表示的是id的属性值
  • b1c297678c9548ce84b08bbaba2109ff.png

代码示例(by_id):

# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("http://www.baidu.com")
# 通过ID定位到百度输入框并在输入框中输入"百度一下"
driver.find_element_by_id("kw").send_keys("百度一下")
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()

1.3.2 通过name进行定位

  • 元素有name属性 可以通过元素的name属性值进行元素定位   【 在HTML页面中,name属性值是可以重复的。】
  • 定位方法:  find_element_by_name(name)   # 括号中 name 参数表示的是name的属性值
  • 5098b77309684f4a9cb7c2560110823b.png

代码示例(by_name):

# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("http://www.baidu.com")
# 通过name定位到百度输入框并在输入框中输入"这是通过name定位进行的输入"
driver.find_element_by_name("wd").send_keys("这是通过name定位进行的输入")
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()

1.3.3 通过class_name进行定位

  • 元素有class属性 可以通过元素的class属性值进行元素定位   【 class属性值是可重复的
  • 定位方法: find_element_by_class_name(class_name)   #  括号中 class_name 参数表示的是class的其中一个属性值
  • b8167f1140b54d298316d4bb244cefc7.png

代码示例(by_class_name):

# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("http://www.baidu.com")
# 通过class_name定位到百度输入框并在输入框中输入"这是通过class_name定位进行的输入"
driver.find_element_by_class_name("s_ipt").send_keys("这是通过class_name定位进行的输入")
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()

1.3.4 通过tag_name进行定位

  • 在同一个html页面当中,相同标签元素会有很多。
  • 定位方法:  find_element_by_tag_name(tag_name)  # 括号中 tag_name 表示的是元素的标签名称。
    如果有重复的元素,定位到的默认是第一个元素
  • 实际工作中一般需要结合定位一组元素的方法,通过下标来选中目标元素
  • 一组元素定位方法:
    • find_elements_by_id(id)   注意elements有s
      find_elements_by_tag_name(tag_name)   注意elements有s
    • 定位一组元素返回的值是一个列表,可以通过下标来使用列表中的元素,下标是从0开始
    • 5d43a4c3a1ea4867a4495914dd38e67b.png

代码示例(by_tage_name)

# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("http://www.baidu.com")
# 通过tag_name定位输入框(第8个input标签)
elements = driver.find_elements_by_tag_name("input")
elements[7].send_keys("这是定位一组元素的方法")
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()

1.3.5通过link_text进行定位

  • 主要用来定位a标签,通过超链接的全部文本信息进行元素定位
  • 定位方法:  find_element_by_link_text(link_text)   #  括号中 link_text 参数代表的是a标签的全部文本内容。
  • 666e909ff0ed4dab8671d1baf9c0801b.png

代码示例(by_link_text)

# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("http://www.baidu.com")
# 通过partial_link_text定位到"hao123"网站并点击
driver.find_element_by_link_text("hao123").click()
# 等待3s
time.sleep(3)
# 退出浏览器驱动(释放系统资源)
driver.quit()

1.3.6 通过partial_link_text进行定位

  • 主要用来定位a标签,通过超链接的局部文本信息进行元素定位
  • 定位方法:find_element_by_partial_link_text(partial_link_text)    # 括号中 partial_link_text表示的是a标签 的局部文本内容
  • 2a03917081934e08be69c7976262ef38.png

代码示例(partial_link_text)

# 导包
import time
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度网站
driver.get("http://www.baidu.com")
# 通过partial_link_text定位到"hao123"网站并点击
driver.find_element_by_partial_link_text("123").click()
# 等待3s
time.sleep(3)
# 退出浏览器驱动(释放系统资源)
driver.quit()

未完待续……

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值