八大元素和下拉列表的定位

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:python 自动化----1、元素定位+下拉列表的定位


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 八大元素和下拉列表的定位
  • 前言
  • 一、八大元素定位
    • 1.环境的安装和注意点
    • id元素定位
    • name元素定位
    • classname元素定位
    • tagname元素定位
    • link text元素定位
    • partial_link_text元素定位
    • xpath定位
    • CSS定位
    • 元素组定位方式
    • By的定位方式
  • 二、下拉列表定位
    • 1.Select+OPtion和ul+li
    • 2.、下拉列表的定位
  • 总结

前言

本章节主要介绍八大元素定位和下拉列表的定位,这里我就不介绍环境的安装了,我们直接开始
提示:这里可以添加本文要记录的大概内容:


提示:以下是本篇文章正文内容,下面案例可供参考

一、八大元素定位

1、id
2、name
3、class name
4、tagname
5、link text
6、partial link text
7、xpath
8、css selector

这里简单的总结一下
id、name、class name 、tagname 这个四个根据元素标签和元素数据进行定位
link text、partial link text 这两个根据链接文本进行定位(a标签)
xpath:元素路径的定位
css:css选择器定位(样式定位)

下面我结合代码,进行讲解
我先讲解一下如何再网页中查看元素
1、首先我们打开一个网站,以百度为例
2、选择需要定位元素,鼠标右击,再点击检查

这就这个元素的属性。然后根据他的id值或者classname值进行定位。
还有一种方法就是,按F12 进入,然后如下图进行操作

1.环境的安装和注意点

注意点。1、谷歌的版本必须和驱动的版本一致,否则运行就会报错。
谷歌的驱动链接地址我放这里了谷歌驱动下载
有些小伙伴下载驱动的时候,发现只有window32的,没有64的,就不知道盖下载哪一个了。其实直接下载32的就行了,下载好后,放在python安装目录下
如何查看谷歌当前版本,如图

2、建议关闭谷歌自动更。关闭方式可以看这篇博客,
https://blog.csdn.net/weixin_48502426/article/details/122955721

id元素定位

前提有id属性

from selenium import  webdriver
# 使用谷歌浏览器,当然也可FireFox和Safari
driver=webdriver.Chrome()
# 打开百度浏览器
driver.get('https:www.baidu.com')
# 定位到百度搜索栏,并输入python
driver.find_element_by_id('kw').send_keys('python')
# 关闭浏览器,运行
driver.close()

如何想看运行效果可以注释,关闭浏览器,这里教大家一个py注释一行的快捷键Ctrl + / 。因为运行块,肉眼难以察觉到。下节我将三种等待时间,小伙伴们可以加入试试效果的。
执行后的效果如图

name元素定位

前提有name属性

from selenium import  webdriver
# 使用谷歌浏览器,当然也可FireFox和Safari
driver=webdriver.Chrome()
# 打开百度浏览器
driver.get('https:www.baidu.com')
# 定位到百度搜索栏,并输入python
driver.find_element_by_name('wd').send_keys('python')
# 关闭浏览器,运行
driver.close()

执行结果

classname元素定位

前提有class属性

from selenium import  webdriver
# 使用谷歌浏览器,当然也可FireFox和Safari
driver=webdriver.Chrome()
# 打开百度浏览器
driver.get('https:www.baidu.com')
# 定位到百度搜索栏,并输入python
driver.find_element_by_class_name('s_ipt').send_keys('python')
# 关闭浏览器,运行
driver.close()

tagname元素定位

tagname 通过input标签来定位,一般不使用,因为效率毕竟低
定位方式和前三个类似,因为没有找到较好的列子,我这里就不用代码演示了。方式就是find_element_by_tag_name()

link text元素定位

link text 是通过a标签进行定位的
如图中的红框

from selenium import  webdriver
# 使用谷歌浏览器,当然也可FireFox和Safari
driver=webdriver.Chrome()
# 打开百度浏览器
driver.get('https:www.baidu.com')
# 定位到hao123 并进行点击
driver.find_element_by_link_text('hao123').click()
# 关闭浏览器,运行
# driver.close()

partial_link_text元素定位

partial_link_text也是通过a标签进行一个模糊的匹配

from selenium import  webdriver
# 使用谷歌浏览器,当然也可FireFox和Safari
driver=webdriver.Chrome()
# 打开百度浏览器
driver.get('https:news.baidu.com')
# 定位到小米粥链接并进行点击
driver.find_element_by_partial_link_text('小米粥').click()
# 关闭浏览器,运行
# driver.close()

xpath定位

xpath定位方式
1、路径定位 绝对路径和相对路径
2、元素属性定位
3、层级与属性定位
4、属性与逻辑定位结合

1、绝对路径的定位,最外层到指定元素之间的所有层级 如/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
可以鼠标右击,查看定位的元素属性,然后点击copy–full copy XPath
相对路径的定位 从符合的第一个元素开始,如//input[@id=“kw”]
也可以鼠标右击,查看定位的元素属性,然后点击copy-- copy XPath
2、元素属性定位 利用元素的唯一属性值,//*[@id=“kw”] 如下面代码

from selenium import  webdriver
# 使用谷歌浏览器,当然也可FireFox和Safari
driver=webdriver.Chrome()
# 打开百度浏览器
driver.get('https:www.baidu.com')
# 定位到编辑框并输入python
# 相对路径
driver.find_element_by_xpath('<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">').send_keys('python')
# 绝对路径
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('python')
# 属性定位
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
# 关闭浏览器,运行
# driver.close()

3、层级定位
找的元素没有唯一值,但父级是唯一值
//*[@id=‘p1’]/input

4、属性与逻辑重合
解决元素之间相同属性重名问题
//*[@id=‘telA’ and @class=‘telA’]

CSS定位

css定位方式比xpath速度更快,建议平常使用css定位方式,之前一个面试官就有问道我,八大元素中你一般用什么方式定位,为什么。
定位方式
1、id选择器
2、class选择器
3、元素选择器
4、属性选择器
5、层级选择器

id选择器 格式:#id属性值
class选择器 格式:.class属性值
元素选择器 格式:input(选择所有input元素)
属性选择器 格式:如[name=‘name’]不推荐在属性中用id或者class
层级选择器 格式:element>element 如:p>input(返还所有p元素下所有的input元素) 其中 > 可以用空格替代

from selenium import  webdriver
# 使用谷歌浏览器,当然也可FireFox和Safari
driver=webdriver.Chrome()
# 打开百度浏览器
driver.get('https:www.baidu.com')
# 定位到编辑框并输入python# 通过id定位
driver.find_element_by_css_selector('#kw').send_keys('python')
# 通过class定位
driver.find_element_by_css_selector('.s_ipt').send_keys('python')
# 通过属性定位
driver.find_element_by_css_selector('name="wd"').send_keys('python')# 关闭浏览器,运行
# driver.close()

元素组定位方式

find_elements_by_xxx 和单个不同的是element多了个s
1、定位到后查找所有符合的函数
2、返还的定位元素为列表形式
3、如果未定位到元素,会返回为空值

By的定位方式

导包
from selenium.webdriver.comm.by import By
这个教小伙伴一个快速导包的办法,可以输入
find_element(By.ID,‘userA’) 点击By.ID,然后按alt+enter
需要两个参数,一个定位类型一个是定位具体方式

二、下拉列表定位

1.Select+OPtion和ul+li

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.、下拉列表的定位

先介绍Select的方法

import timefrom selenium import  webdriver
from selenium.webdriver.support.ui import Select# 使用谷歌浏览器,当然也可FireFox和Safari
from selenium.webdriver.common.by import Bydriver=webdriver.Chrome()
# 打开12306
driver.get('https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E5%8E%A6%E9%97%A8,XMS&ts=%E5%8D%97%E6%98%8C,NCG&date=2022-04-12&flag=N,N,Y')
#定位到下拉框
els=driver.find_element_by_css_selector('#cc_start_time')# 三种方式选择下拉属性
# 方式一
Select(els).select_by_value('00000600')#使用select中的方法定位value的值
# time.sleep(2) 等待两秒
# 方式二
Select(els).select_by_index(4)#定位元素所在的位置
time.sleep(2)
# 方式三
Select(els).select_by_visible_text('06:00--12:00') #定位元素的文本值
time.sleep(2)# 关闭浏览器,运行
driver.close()

这里我结合图片来和小伙伴解释一下value 、index、visible_text这三个值

大家运行代码可以观看右上角的时间变化,

2、ul+li 定位方式

  1. 先定位到ul,并且将定位到的值赋给变量a a=driver.find_element_by_id(“ul的id”)
  2. 再用变量a去找到li a.find_element_by_id(“li的id”).click()

总结

提示:这里对文章进行总结:

这个文章主要讲解了八个定位元素和元素组定位的介绍。中间也有一点知识点的补充,下篇文章我会介绍自动化中的三种时间等待,强制等待,隐性等待和强制等待。在下拉框定位中我就使用到了强制等待,大家可以执行一下程序看一下效果。欢迎各位留言、点赞。

python+selenium之元素、下拉列表的定位相关推荐

  1. python selenium 获取元素下的元素个数_Python + Selenium,分分钟搭建 Web 自动化框架!(送自动化测试书籍)...

    前言 在程序员的世界中,一切重复性的工作,都应该通过程序自动执行.「自动化测试」就是一个最好的例子.随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的 ...

  2. python selenium 等待元素出现_Selenium 3种等待方式

    加入等待时间,主要是考虑到网页加载需要时间,可能由于网速慢,或者使用了 ajax 技术实现了异步加载等,如果程序找不到指定的页面元素,就会导致报错发生. 常用的有3种等待方式:强制等待 隐式等待 显示 ...

  3. python selenium 判断元素是否可见

    #在元素定位二次封装的基础上,封装判断元素是否可见,找到元素时返回True,找不到元素的时候抛出异常,返回Falsedef isElementPresent(self,locate_type,valu ...

  4. python selenium 等待元素出现_Selenium(Python)等待元素出现

    1.显式等待 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webd ...

  5. python selenium 等待元素出现_Python Selenium等待加载几个元素

    考虑到Mr.E.和Arran的评论,我在CSS选择器上完全遍历了列表.棘手的部分是关于我自己的列表结构和标记(更改类等),以及动态创建所需的选择器并在遍历期间将它们保存在内存中. 我通过搜索任何未加载 ...

  6. python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法

    1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome ...

  7. android select下拉列表_Python+selenium自动化之下拉列表操作(一)

    下拉列表操作中分为两种:select.非select 非select下拉列表操作 非select下拉列表的操作与其他元素的操作一致,定位元素,设置等待,操作元素. 下面还是以腾讯邮箱为例,查看一封邮件 ...

  8. python selenium 元素定位和页面操作

    目录 一.浏览器操作 二.简单对象的定位 三.操作测试对象 四.鼠标事件 五.键盘事件 六.获取页面的title和url 七.设置等待时间 八.定位一组对象 九.层级定位 十.多表单切换 十一.多窗口 ...

  9. Python selenium根据class定位页面元素,xpath定位

    Python selenium根据class定位页面元素 在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写 ...

最新文章

  1. 排序算法---快速排序(java版)
  2. AJAX 跨域请求 - JSONP获取JSON数据
  3. mac mysql 5.7.9安装教程_mac系统OS X10.10版本安装最新5.7.9mysql的方法_MySQL
  4. python快速入门 pdf-十分钟快速入门python
  5. 如何批量删除会计科目、供应商、客户的主数据
  6. TCP/IP学习笔记(五)TCP的保活定时器
  7. web开发入门_Web开发人员和设计师的自由职业入门
  8. 华为公布鸿蒙2.0内测清单,华为鸿蒙操作系统2.0版支持的设备清单流出,荣耀30s...
  9. AudioRecord 采集音频PCM数据
  10. 比特币矿商比特微正筹备美股上市
  11. wxpython 隐藏_使用cxFreeze冻结wxPython应用程序时如何隐藏控制台窗口?
  12. 结构体08:结构体案例2
  13. 百度深度学习初级工程师认证划水贴
  14. 利用Struts拦截器完成文件上传功能
  15. RS485通讯接口定义图详解
  16. xmlspy xmlviewer
  17. 基于特征的真菌分解木材的理解
  18. 给UILabel中的文字加删除线
  19. 海量之道之SET模型
  20. js延迟(异步)加载的6种方式 为什么要延迟加载js呢?

热门文章

  1. 算法实现自动扫雷游戏
  2. MySQL报错:SQL错误[1146][42s02]: Table 'tablename' doesn't exist(记一次以为自己删库的经历)
  3. 【后台弹窗】应用跳转直通车--通知栏通知跳转后台应用
  4. mysql 自动化运维开发_Python自动化运维开发----基础(十三)Mysql数据库基础
  5. 银河麒麟 Kylin_s10_sp3安装Oracle11g(FS)(亲测有效)
  6. MultiMC的离线模式启动
  7. 计算机名(主机名)、本机地址(IP/IPv4)、localhost、127.0.0.1的关系
  8. R语言逻辑回归Logistic回归分析预测股票涨跌
  9. 垃圾小白羊leetcode刷题记录3
  10. 手机图片怎么做成笔记 手机照片笔记怎么制作