selenium之八大元素定位:

1、通过ID的方式定位  id是页面的唯一标识

例如:找到百度的搜索输入框

driver.findElement(By.id("kw"))

2、通过tagName的方式定位

用标签名定位非常少 ---一般会重复
driver.findElements(By.tagName("input"));

3、通过className方式定位      className == 样式名
注意:如果元素的class样式有多个,只能通过其中一个去定位
driver.findElement(By.className("s_ipt"))

4、linkText  超链接的完整文本

例如:百度首页的地图
driver.findElement(By.linkText("地图"))

5、partialLinkText超链接部分文本定位

例如:百度首页的百度热搜

driver.findElement(By.partialLinkText("中国迈入创新型国家行列"))

6、name ---name属性

例如:百度首页的输入框
driver.findElement(By.name("wd"))

7、cssSelector
1)根据标签名定位 tagName
driver.findElements(By.cssSelector("input"));

2) 根据ID定位 id前需要加上一个#
driver.findElement(By.cssSelector("#kw"))

3)通过样式名className查找 在样式名前加一个.号
driver.findElement(By.cssSelector(".s_ipt"))
driver.findElement(By.cssSelector(".bg s_btn"))

4)根据属性名查找 (标签名[属性名="属性值"])

属性名查找又可以分为单属性或者多属性

单属性       标签名[属性名="属性值"])
driver.findElement(By.cssSelector("input[name='wd']"))

多属性     (标签名[属性名="属性值"] [属性名="属性值"] [属性名="属性值"])
driver.findElement(By.cssSelector("input[name='wd'][class='s_ipt'][maxlength='255']"))

8、xpath 定位
1)xpath绝对路径 -----容易发生变化,不建议使用

就是根据html格式的路径 一 层层找到需要定位的元素

driver.findElement(By.xpath("html/body/div[1]/div[1]/div[1]/div[1]/form/span[1]/input"))

2)相对路径

格式://->相对路径   标签名[@属性名='属性值']
百度输入框查找

标签名不确定时用*                           例一: //*[@name='wd']     #通过下标:  //a[@属性名 and @属性名][1]

标签名确定则用标签名代替               例二: //input[@name='wd']
多属性查找, 用and 连接                 例三: //input[@name='wd'] and [@autocomplete='off']
支持文本定位                                   例四: //a[text()='抗击肺炎']
xpath 部分文本的匹配                      例五: //a[contains(text(),'击肺炎')]
xpath 部分属性的匹配                      例六: //input[contains(@type,'submi')]

3)xpath 轴定位

常用的轴名称主要有父节点parent 、当前节点之前的所有兄弟节点precedling-sibling、当前节点之后的所有兄弟节点following-sibling


轴定位:
# 找子孙后代
//标签[@属性名 ]//标签[@属性名]//标签名[属性名]

# 轴运算
//a[@id='kw']/ancestor::标签名[@属性名]
# 找哥哥姐姐
//标签[@属性名 ]/preceding-sibling::标签名[@属性名]
# 找弟弟妹妹
//标签[@属性名 ]/following-sibling
#找后代
//li[@class='side-menu__item']/descendant::span[text()='基础']

Python +selenium 自动化之元素定位的更多相关文章

  1. selenium自动化之元素定位方法

    在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...

  2. python ui自动化之元素定位和常用操作

    做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 ...

  3. Selenium自动化-CSS元素定位

    接下来,开始讲解 CSS元素定位. CSS定位速度快,功能多,但是不能向上查找,比 xpath好用,是本人认为最好用的定位方式   大致用法总结: 具体使用仿上篇博客.http://www.cnblo ...

  4. Python+Selenium 自动化实现实例-定位frame中的元素

    场景 处理frame需要用到2个方法,分别是switch_to_frame(name_or_id_or_frame_element)和switch_to_default_content() 如何理解这 ...

  5. (appium+python)UI自动化_03_元素定位工具

    前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...

  6. Selenium自动化测试之元素定位

    步骤: 1.通过前端工具,查看元素的属性 2.通过属性定位 iddriver.findElement(By.id("kw")) namedriver.findElement(By. ...

  7. Python+Selenium 自动化实现实例-定位一组对象(checkbox,inputs)

    # -*- coding: utf-8 -*- from selenium import webdriver import time import os dr = webdriver.Chrome() ...

  8. Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法

    Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法   之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...

  9. Python+Selenium自动化-定位页面元素的八种方法

    Python+Selenium自动化-定位页面元素的八种方法   本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...

  10. Python selenium PO By.XPATH定位元素报错

    Python selenium PO  By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[tex ...

随机推荐

  1. 特性介绍 | MySQL 测试框架 MTR 系列教程(一):入门篇

    作者:卢文双 资深数据库内核研发 去年年底通过微信公众号[数据库内核]设定了一个目标--2023 年要写一系列 特性介绍+内核解析 的文章(现阶段还是以 MySQL 为主). 虽然关注者很少,但本着& ...

  2. 自定义Feign拦截器

    简介 Feign的拦截器RequestInterceptor SpringCloud的微服务使用Feign进行服务间调用的时候可以使用RequestInterceptor统一拦截请求来完成设置head ...

  3. RK3568用户自定义开机画面功能

    RK方案中的开机画面处画逻辑 在RK的方案中,如RK1109,RK1126,RK3568这些嵌入式LINUX方案在开机画面的处理逻辑都是一致的. 用户的uboot,kernel开机画面都是同dts,k ...

  4. YOLO3论文中文版

    文章目录 YOLO3论文中文版 摘要 1.引言 2. 解决方案 2.1 边界框预测 2.2 类预测 2.3 多尺度预测 2.4 特征提取器 2.5 训练 3.我们的做法 4. 失败的尝试 5.这一切意 ...

  5. 分享一下.net core mvc的ModelStateExtend

    主要代码: using Cracker.Core.Function; using Microsoft.AspNetCore.Mvc.ModelBinding; namespace Cracker.Co ...

  6. 2022-10-26:以下go语言代码输出什么?A:1 3 2;B:1 2 3;C:3 1 2;D:3 2 1。 package main import “fmt“ type temp struc

    2022-10-26:以下go语言代码输出什么?A:1 3 2:B:1 2 3:C:3 1 2:D:3 2 1. package main import "fmt" type te ...

  7. 2021-02-05:给定一个数N,想象只由0和1两种字符,组成的所有长度为N的字符串。如果某个字符串,任何0字符的左边都有1紧挨着,认为这个字符串达标。请问有多少达标的字符串?

    2021-02-05:给定一个数N,想象只由0和1两种字符,组成的所有长度为N的字符串.如果某个字符串,任何0字符的左边都有1紧挨着,认为这个字符串达标.请问有多少达标的字符串? 福哥答案2021-0 ...

  8. 2021-05-06:给定一个二维数组matrix, 你可以从任何位置出发,走向上下左右四个方向 。返回能走出来的最长的递增链长度。

    2021-05-06:给定一个二维数组matrix, 你可以从任何位置出发,走向上下左右四个方向 .返回能走出来的最长的递增链长度. 福大大 答案2021-05-06: 自然智慧即可. 动态规划.二维 ...

  9. ITIL介绍

    摘自:金角大王 https://www.cnblogs.com/alex3714/articles/5420433.html 本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Rest ...

  10. Transformer 估算 101

    本文主要介绍用于估算 transformer 类模型计算量需求和内存需求的相关数学方法. 引言 其实,很多有关 transformer 语言模型的一些基本且重要的信息都可以用很简单的方法估算出来.不幸 ...