ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

selenium python学习笔记一之元素定位

2021-08-13 12:32:27  阅读:255  来源: 互联网

标签:E8% E9% python 一之 BB% selenium E6% E5% AF%


学习资料连接:https://download.csdn.net/download/waiwaijsj/7214035

1、元素定位

  什么是元素:

    元素:由标签头+标签尾+标签头和标签尾包括的文本内容

  元素的信息就是指元素的标签名以及元素的属性

  元素的层级结构就是指元素之间相互嵌套的层级结构

  元素定位--最终就是通过元素的信息或者元素的层级结构来进行元素定位。

2、浏览器开发者工具介绍

  -浏览器开发者工具主要用来查看元素的信息,同时也可以查看接口相关的信息

  -浏览器开发者工具不需要安装,浏览器自带。

  -浏览器开发者工具的启动:

    -直接按F12 不区分浏览器

    -通过右键的方式来启动浏览器开发者工具(谷歌浏览器右键选择检查,火狐浏览器右键选择“检查元素”)

    -浏览器开发者工具使用

      --点击浏览器卡发着工具左上角   元素查看器按钮

      --再点击想要查看的元素

3、元素定位

  •   id定位
  •   name定位
  •   class_name定位
  •   tag_name定位
  •   link_text 定位
  •   partail_link_text定位
  •   xpath定位
  •   css定位

3.1 id定位

  -通过元素的id属性值来进行元素的定位,在html标准规范中ID值时唯一的

  说明:元素要有ID属性

  --定位方法:find_element_by_id(id) # id参数表示的是id的属性值

 1 """
 2 元素定位
 3 通过ID属性值来定位元素,前提是元素必须有ID属性值,在html规范中id是唯一的,但是有的开发人员id不唯一,这个要注意
 4 步骤:
 5 1、导包
 6 2、创建浏览器实例
 7 3、用浏览器打开链接
 8 4、定位元素,并做相应的动作
 9 5、关闭浏览器实例
10 """
11 # 导包
12 from selenium import webdriver
13 # 创建浏览器实例
14 driver = webdriver.Firefox()
15 #  driver.get方法 是打开填写的url地址
16 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
17 driver.find_element_by_id("userA").send_keys("admin")
18 driver.find_element_by_id("passwordA").send_keys("123456")
19 
20 # 关闭浏览器实例
21 # driver.quit()

3.2 name定位

  -通过元素的name值进行元素定位,name属性值 在HTML页面中是可以重复的

    -说明:元素要有name属性值

  -定位方法:find_element_by_name(name) # name 参数表示的是name的属性值

 1 """
 2 通过元素的name属性值进行定位
 3   首先要确定 元素有name属性值
 4 
 5 步骤:
 6 1、导包
 7 2、创建浏览器实例
 8 3、打开网页
 9 4、根据元素name属性定位
10 
11 """
12 from selenium import webdriver
13 
14 driver = webdriver.Firefox()
15 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
16 # 根据元素的属性name值 获取element
17 driver.find_element_by_name("telA").send_keys("13100000008")
18 
19 # driver.quit()

3.3 通过class属性值进行定位

  通过元素的class属性值进行元素定位,calss属性值是可重复的

    --说明:元素必须要有class属性

  定位的方法:find_element_by_class_name(class_name) # class_name 参数表示的是class的其中一个属性值,不能是属性的全部名称,否则无法匹配

 1 """
 2 通过class 属性名称来查找元素
 3     说明:元素必须要有class属性值
 4 
 5 步骤:
 6 1、导包
 7 2、创建浏览器实例
 8 3、get打开网页
 9 4、根据class属性值 定位元素
10 5、关闭浏览器实例
11 
12 """
13 from selenium import webdriver
14 
15 driver = webdriver.Firefox()
16 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
17 driver.find_element_by_class_name("emailA").send_keys("1111111@qq.com")
18 # driver.quit()

 3.4 tag_name定位

  -通过元素的标签名称进行定位,在同一个HTML页面中,相同的标签元素会有很多。

    这种定位元素的方式不建议大家在工作中使用。

  -定位方法 find_element_by_tag_name(tag_name) # tag_name 表示的是元素的标签名称

  如果有重复的元素,定位到的都是第一个元素

 1 """
 2 按照标签名 进行元素定位
 3 但是不建议在工作中使用,原因是 标签名相同的元素太多了
 4 
 5 如果存在标签名相同的元素,定位时,定位到的是第一个元素
 6 """
 7 from selenium import webdriver
 8 from selenium.webdriver.support.ui import Select
 9 driver = webdriver.Firefox()
10 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
11 # 下拉选框 值的选择
12 Select(driver.find_element_by_tag_name("select")).select_by_value("gz")
13 
14 # driver.quit()

 3.5 link_text定位

  -通过超链接的全部文本信息进行元素定位,主要用来定位a标签

  -定位方法:find_element_by_link_text(link_text) # link_text参数代表的是a标签的全部文本内容

1 """
2 通过超链接的全部文本信息进行定位,主要用来定位a标签
3 定位方法:find_element_by_link_text(link_text)
4 """
5 from selenium import webdriver
6 
7 driver = webdriver.Firefox()
8 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
9 driver.find_element_by_link_text("新浪").click()

 3.6 partial_link_text定位

  -通过超链接的局部文本信息进行元素定位,主要用来定位a标签

  -定位方法:

    find_element_by_partial_link_text(partial_link_text) # partial_link_text表示的是a标签的局部文本内容

 1 """
 2     通过超链接的局部文本信息进行元素定位,主要用来定位a标签
 3   -定位方法:
 4     find_element_by_partial_link_text(partial_link_text) # partial_link_text表示的是a标签的局部文本内容
 5 """
 6 
 7 from selenium import webdriver
 8 
 9 driver = webdriver.Firefox()
10 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
11 driver.find_element_by_partial_link_text("访问").click()

3.7 定位一组元素

  -定位一组元素的方法:

    -find_elements_by_id(id)

    -find_elements_by_tag_name(tagname)

    -find_elements_by_link_text(link_text)

    -find_elements_******函数都可以定位一组元素,返回是一个列表

  -定位一组元素的方法的返回值时一个列表

  -可以通过下标来使用列表中的元素

  -下标从0开始

 1 """
 2 定位一组元素
 3 find_elements
 4 函数返回为一个列表
 5 通过列表的下标进行访问元素,下标从0开始
 6 """
 7 from selenium import webdriver
 8 
 9 driver = webdriver.Firefox()
10 driver.get("file:///F:/2021%E5%B9%B4%E9%BB%91%E9%A9%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/02%E7%AC%94%E8%AE%B0%E8%AE%B2%E4%B9%89%E6%BA%90%E7%A0%81%E8%BD%AF%E4%BB%B6%E8%AF%BE%E4%BB%B6%E8%B5%84%E6%96%99/09%E3%80%81UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%8F%8A%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/UI%E8%87%AA%E5%8A%A8%E5%8C%96/UI%E8%87%AA%E5%8A%A8%E5%8C%96/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")
11 input_list = driver.find_elements_by_tag_name("input")
12 input_list[0].send_keys("root")
13 input_list[1].send_keys("123456")
14 input_list[2].send_keys("1310000009")

 

标签:E8%,E9%,python,一之,BB%,selenium,E6%,E5%,AF%
来源: https://www.cnblogs.com/1050619969kong/p/15136176.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有