当前位置: 首页 > news >正文

测开学习DAY29

黑马程序员网课学习(web自动化)

2章  Selenium-API操作

一、元素定位

1. 为什么要使用元素定位

        要使用web自动化操作元素,必须首先找到此元素。

2. 定位工具

        火狐:Firebug (F12获取直接点击 Friebug图标)

        谷歌:F12键(开发者工具)

3. 定位元素时依赖于什么

        1. 标签名

        2. 属性

        3. 层级

        4. 路径

4. 定位方式

        1. id

        2. name

        3. class_name(使用元素的class属性定位)

        4. teg_name(标签名称 <标签名 .../>)

        5. link_text(定位超连接 a标签)

        6. partial_link_text(定位超链接 a标签 模糊)

        7. xpath(基于元素路径)

        8. css(元素选择器)

        汇总:

            1. 基于元素属性特有定位方式(id\name\class_name)

            2. 基于元素标签名称定位:tag_name

            3. 定位超链接文本(link_text、partial_link_text)

            4. 基于元素路径定位(xpath)

            5. 基于选择器(css)

4.1 id 定位

   说明:通过元素的id属性定位,id一般情况下在当前页面中是唯一。

   方法:driver.find_element_by_id(id)

   提示:元素必须要有id属性。

   案例:

            # 导包 

            # 获取浏览器驱动对象

            # 打开url 

            # 查找用户名文本框

            # 查找密码框文本框

            # 输入用户名

            # 输入密码

            # 暂停3秒

            # 关闭驱动

    提示: 

            1. 输入方法:send_keys("输入内容");

            2. 退出浏览器驱动:driver.quit();

            3. 打开url: driver.get(url)

            4. 导包:from selenium import webdriver

            5. 获取火狐浏览器驱动对象 driver = webdriver.Firefox()

# 导包
from selenium import webdriver
from time import sleep# 获取 浏览器对象
driver = webdriver.Firefox()# 打开url
# 注意:\反斜杠在python是转义字符  r:修饰的字符串,如果字符串中有转义字符,不进行转义使用
url = r"E:\课堂\北京\北京十期\Day01\02_其他资料\浏览器\课堂素材\注册A.html"# 使用双反斜杠 进行转义操作
# url = "E:\\课堂\\北京\\北京十期\\Day01\\02_其他资料\\浏览器\\课堂素材\\注册A.html"# 使用本地浏览模式 前缀必须添加 file:///
# url = "file:///E:/课堂/北京/北京十期/Day01/02_其他资料/浏览器/课堂素材/注册A.html"# 复制浏览器地址
# url = "file:///E:/%E8%AF%BE%E5%A0%82/%E5%8C%97%E4%BA%AC/%E5%8C%97%E4%BA%AC%E5%8D%81%E6%9C%9F/Day01/02_%E5%85%B6%E4%BB%96%E8%B5%84%E6%96%99/%E6%B5%8F%E8%A7%88%E5%99%A8/%E8%AF%BE%E5%A0%82%E7%B4%A0%E6%9D%90/%E6%B3%A8%E5%86%8CA.html"
driver.get(url)# 查找 用户名元素
username = driver.find_element_by_id("userA")# 查找 密码元素
password = driver.find_element_by_id("passwordA")# 用户名输入 admin  send_keys("内容")
username.send_keys("admin")# 密码 输入 123456
password.send_keys("123456")# 暂停3秒
sleep(3)# 退出浏览器驱动
driver.quit()
4.2 name 定位

    说明:通过元素的name属性来定位, name一般名称为重复。

    方法: drivr.find_element_by_name(name)

    提示: 元素必须要有name属性 

4.3 class_name定位

    说明: 通过元素的class属性来定位,class属性一般为多个值。

    方法:  driver.find_element_by_class_name() 

    提示: 元素必须要有class属性

4.4 区别    

        id: 一般为唯一标识符。

        name:可以重名

        class:多个命名。

4.5 tag_name (了解)

        说明:是通过元素的标签名称来定位,标签名(查看元素时尖括号(<)紧挨着的单词或字母就是标签名)(标签名也就是元素名)

        方法:driver.find_element_by_tag_name("标签名")

        注意: 如果页面中存在多个相同标签,默认返回第一个标签元素。

4.6 link_text

        说明:定位超链接标签

        方法:driver.find_element_by_link_text()

        注意: link_text:只能使用精准匹配(a标签的全部文本内容)

4.7 partial_link_text【推荐】

        说明:定位超链接标签

        方法:driver.find_element_by_partial_link_text()

        注意: 

            1. 可以使用精准或模糊匹配,如果使用模糊匹配最好使用能代表唯一的关键词

            2. 如果有多个值,默认返回第一个值

二、Xpath 和 Css 定位

1. 为什么使用Xpath和css定位

        1. id,name,class:依赖于元素这三个对应的属性,如果元素没有以上三个属性,定位方法不能使用。

        2. link_text,partial_link_text:只适合超链接

        3. tag_name:只能找页面唯一元素,或者 页面中多个相同元素中的第一个元素

2. 什么是Xpath定位

        说明:基于元素的路径

3. xpath介绍

        xpath是XML  Path简称

       (xml是一种标记语言,焦点:数据存储于传递(配置文件) ,后缀.XML)

4. Xpath常用的定位策略

    1. 路径

            1). 绝对路径:

                    语法:以单斜杠开头逐级开始编写,不能跳级。如:/html/body/div/p[1]/input

            2). 相对路径

                    语法:以双斜杠开头,双斜杠后边跟元素名称,不知元素名称可以使用*代替。 

                        如: //input 或者 //*

   2. 路径结合属性

                语法:在Xpath中,所有的属性必须使用@符号修饰 如://*[@id='id值']

   3. 路径结合逻辑(多个属性)

                语法://*[@id="id值" and @属性='属性值']

   4. 路径结合层级

                语法://*[@id='父级id属性值']/input

   提示:

            1. 一般建议使用指定标签名称,不使用*代替,效率比较慢。

            2. 无论是绝对路径和相对路径,/后面必须为元素的名称或者*

            3. 扩展:在工作中,如果能使用相对路径绝对不使用绝对路径。 

"""需求:1. 使用绝对路径定位 用户名 输入 admin2. 暂停2秒钟3. 使用相对路径定位 密码框 输入 123方法:driver.find_element_by_xpath()
"""# 导包
from selenium import webdriver
from time import sleep# 获取 浏览器驱动对象
driver = webdriver.Firefox()# 打开 注册A.html
url = r"D:\web自动化素材\课堂素材\注册A.html"
driver.get(url)# 使用绝对路径定位 用户名 admin
# driver.find_element_by_xpath("/html/body/form/div/fieldset/p[1]/input").send_keys("admin")# 使用层级结合属性 定位用户名:
driver.find_element_by_xpath("//p[@id='p1']/input").send_keys("admin")# 暂停2秒
sleep(2)# 使用相对路径 定位 密码  123
# driver.find_element_by_xpath("//input[@id='passwordA']").send_keys("123")# 使用逻辑结合
driver.find_element_by_xpath("//input[@id='passwordA' and @placeholder='密码A']").send_keys("123")
# 暂停 3秒
sleep(3)
# 退出浏览器驱动
driver.quit()

5. Xpath扩展

   1. //*[text()='XXX']   # 定位文本值等于XXX的元素  

            提示:一般适合 p标签,a标签 

   2. //*[contains(@属性,'xxx')]   # 定位属性包含xxx的元素 【重点】

            提示:contains为关键字,不可更改。 

   3. //*[starts-with(@属性,'xxx')]   # 定位属性以xxx开头的元素

            提示:starts-with为关键字不可更改

http://www.dtcms.com/a/613715.html

相关文章:

  • 2.常用软件记录汇总
  • L2 RLC层介绍:架构、数据封装与模式
  • 长沙网站建设 网站设计安全的合肥网站建设
  • 凡科做网站行吗专业网站推广优化
  • 物联网控制|计算机控制-刘川来胡乃平版|第4章:过程通道与人机接口-4.4Human-Machine Interface|课堂笔记|
  • 请求签名(Request Signature)
  • 从零开始构建企业级物联网平台:IoTSharp 架构设计与实践全解析
  • FFmpeg解码音频数据AudioTrack/OpenSL播放
  • 怎么做英文网站wordpress go跳转页面
  • 下载 asp网站手工制作衣服童装环保
  • 重估百度,也是在重估 AI 的未来
  • 网页版C语言编译器:基于Web平台的C语言编译与执行环境优化
  • 网站名称在哪里修改长春自助建站软件
  • 43_FastMCP 2.x 中文文档之FastMCP集成:AuthKit 认证指南
  • MYSQL的三大范式
  • 电商系统中超卖和重复下单问题思考
  • 抽象类VS接口:核心区别与实战选择
  • CSDN博客写作技巧整理
  • 18.【NXP 号令者RT1052】开发——实战-电容触摸按键
  • 三种硬盘检测工具推荐CrytalDiskMark ,DiskGenius,AS SSD Benchmark
  • 解密VQVAE中的Codebook
  • Qt Widgets 模块中的函数详解
  • 怎样才能被百度秒收录我的网站(百度不收录网站怎么办)
  • nginx-file-server
  • 18.PHP基础-递归递推算法
  • 郑州软件开发公司网站广西医院的网站建设
  • 费县做网站职业教育专业建设验收网站
  • 第五章 防火墙设备互联
  • 建导航网站seo企业优化顾问
  • 2025.11.15 力扣每日一题