首页 > 其他分享 >selenium之定位方式和元素操作

selenium之定位方式和元素操作

时间:2024-04-12 18:46:05浏览次数:17  
标签:定位 selenium 元素 driver element input div ele find

selenium之定位方式和元素操作

八大定位方式

导包:

from selenium.webdriver.common.by import By

1、标签 id 属性的定位

ele = driver.find_element(by=By.ID, value="search-input")

2、标签 name 属性的定位

ele = driver.find_element(by="name", value="search-input")

3、需要标签名称的值

ele = driver.find_element(by="tag name", value="input")

4、定位元素的依据是元素中的class 属性

# class属性值中如果带有空格,意味着它其实是一个组合属性值;所以在使用class name的定位方式的时候,class的属性值,只能接受一个(以属性值中的空格符合 来 区分 属性值);

5、通过a标签中的文字定位(text属性)

ele = driver.find_element(by=By.LINK_TEXT, value="登录")

6、link text 的模糊匹配的定位方式,需要a标签中部分 text 属性的值

ele = driver.find_element(by=By.PARTIAL_LINK_TEXT, value="登")

7、通过css定位

7.1 绝对路径

#使用标签名标识层级名称(当前路径名称),使用> 标识下一级
ele = driver.find_element(by=By.CSS_CELECTOR, value="html>body>div>div>div>form>div>input")

7.2 相对路径

# 表示 前面有多少路径我都忽略,我从input开始寻找
ele = driver.find_element(By.CSS_SELECTOR, "input")

7.3 属性过滤

#使用[]标识内部内容为属性的过滤字段
ele = driver.find_element(By.CSS_SELECTOR, 'html>body>header>div>div>ul>li>a[class="am-dropdown-toggle "]')

7.4 其他的过滤方式

参考:https://www.w3school.com.cn/cssref/css_selectors.asp

8、通过xpath定位

8.1 绝对路径

#使用标签名标识层级名称(当前路径名称),使用 / 标识下一级
ele = driver.find_element(by=By.XPATH, value="html/body/div/div/div/form/div/input")

8.2 相对路径

# 表示 前面有多少路径我都忽略,我从input开始寻找
ele = driver.find_element(By.XPATH, "//input")

8.3 属性过滤

#与css 不同,它需要使用@符号标识属性
ele = driver.find_element(By.XPATH, '/html/body/header/div/div/ul/li/a[@class="am-dropdown-toggle "]')

#或者
ele = driver.find_element(By.XPATH, '//a[@class="am-dropdown-toggle "]')

# 多属性定位
driver.find_element(By.XPATH,'//a[@title="tutorial" and @rel="follow"]')

# xpath模糊匹配的函数有两种: starts-with和和contains
#1、class属性值以btn开头的label元素
driver.find_element(By.XPATH,"//label[starts-with(@class,'btn')]")

#2、通过属性值包含btn的label元素
driver.find_element(By.XPATH,"//label[contains(@class,'btn')]")

# xpath通过文本定位元素,文本内容的定位是利用html的text字段进行定位的方法
driver.find_element(By.XPATH, "//span[text()='下一步']")

# 文本内容也支持starts-with和contains模糊匹配
driver.find_element(By.XPATH,"//span[starts-with(text(),下一步')]”)
driver.find_element(By.XPATH,"//span[contains(text(),'下一步')]")

```                    
xpath常见语法一览表
表达d 说明 举例
/ 从根节点开始选取 /html/div/span
// 从任意节点开始选取 //input
. 选取当前节点
.. 选取当前节点的父节点 //input/.. 会选取 input 的父节点
@ 选取属性,或者根据属性选取 //input[@data] 选取具备 data 属性的 input 元素 //@data 选取所有 data 属性
* 通配符,表示任意节点或任意属性 //*[@name='searchKey'] //*[@*='s_int']"                    
```

8.4 其它过滤方式

参考:https://www.runoob.com/xpath/



特殊定位方式

1、元素对象内定位(父子元素定位)

from selenium import webdriver
from selenium.webdriver.common.by import By
 
# 假设您已经有了一个Selenium WebDriver实例叫做driver
 
# 定位父元素
parent_element = driver.find_element(By.XPATH, "//div[@class='parent']")
 
# 定位子元素相对于父元素的位置
child_element = parent_element.find_element(By.XPATH, ".//div[@class='child']")
 
# 现在您可以对子元素执行操作,例如点击
child_element.click()

2、多元素定位

# 返回的是一个list,list中包含的是元素对象
ele = []
eles = driver.find_elements(By.XPATH, "//input")

3、网格定位

参考:https://www.cnblogs.com/rmticocean/p/17966286

4、下拉列表,要求标签名必须是select的标签

from selenium import webdriver
from selenium.webdriver.support.ui import Select
 
# 启动浏览器
driver = webdriver.Chrome()
 
# 打开网页
driver.get("http://www.example.com")
 
# 定位到下拉列表元素,要求标签名必须是select的标签
select = Select(driver.find_element_by_id("dropdown"))
 
# 通过索引选择
select.select_by_index(0)  # 选择第一个选项
 
# 通过值选择
select.select_by_value("value1")
 
# 通过文本选择
select.select_by_visible_text("text1")
 
# 关闭浏览器
driver.quit()



元素操作

1、输入操作

ele.send_keys("呵呵")

2、点击操作

ele.click()

3、截图操作

# 保存图片到本地
ele.screenshot('1.png') 

4、获取元素的属性的值

ele.get_attribute('id')

标签:定位,selenium,元素,driver,element,input,div,ele,find
From: https://www.cnblogs.com/PengHwei/p/18131909

相关文章

  • Python中利用enumerate()精简循环中的索引和元素访问
    ​ Python中,enumerate()函数是一个内置函数,用于在遍历序列(如列表、元组或字符串)时同时获取每个元素的索引和值。可以使代码更简洁、更易读,特别是在需要索引时。使用enumerate()可以避免使用传统的范围(range())和长度(len())组合来访问元素和它们的索引。参考文档:Python中......
  • Java中Array.sort()的几种用法简明教程 (需要初始化要排序的对象)对 一个数组的所有元素
    Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)对一个数组的所有元素进行排序,并且是按从小到大的顺序Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)======================================================1、Arrays.sort(int[]a)......
  • 超详细!详解一道高频算法题:数组中的第 K 个最大元素
    超详细!详解一道高频算法题:数组中的第K个最大元素今天分享的题目来源于LeetCode第215号问题,是面试中的高频考题。题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。......
  • selenium之鼠标键盘操作
    selenium之鼠标键盘操作一、鼠标1、导包:fromselenium.webdriver.common.action_chainsimportActionChains2、常规操作2.1左键单击search_ele=WebDriverWait(driver,15,0.5).until(EC.visibility_of_element_located(("id","search-input")))search_ele.send_k......
  • SpingBoot项目Tomcat假死,导致http(openfeign)请求无法响应问题定位
    项目简介:<spring-boot.version>2.3.2.RELEASE</spring-boot.version><spring-cloud.version>Hoxton.SR12</spring-cloud.version>使用docker进行项目部署问题描述:项目中代码中大量使用异步多线程操作,没个异步过程中大量掺杂数据库查询、Redis查询、Feign调用、RabbitMq发送接收......
  • Selenium 笔记
    相关资料Selenium官网Selenium文档SeleniumPython接口文档如果要查看其他语言的Selenium接口文档,见下载SeleniumW3CWebDriver规范Web驱动器可以访问Selenium官方Web驱动器生态查看各主流浏览器的Web驱动器下载Chrome也包含了ChromeDriver文档115以后版本115以......
  • 3 数字麦阵列声源定位模组 AR1105
    一,产品概述:AR1105是一款专用于音源定位寻向的模组。模组选用行业最新算法内核DSP芯片,并综合简单易用的原则而设计。AR1105模组需要搭配3颗间距都为10mm数字麦克风,利用每2颗数字麦克风组合的心形指向性,能够方便快速的辨识圆周6个方向的音源方向。对比常规的需要......
  • 实验四 车辆定位导航
    点击跳转【实验四车辆定位导航】......
  • 定位Api食用方法
    定位Api食用方法申请接口微信小程序接口地址:小程序(qq.com)1.先在小程序后台,补充相关信息2.按照以下路径找到“getLocation”接口[开发]→[开发管理]→[接口设置]选择“开通”,并补充相关信息,其中演示图片请准备齐全,不然会以“不充分为理由打回”失败:*......
  • 使用docker部署基于selenium和chrome-headless的爬虫
    使用docker部署基于selenium和chrome-headless的爬虫无论是测试还是爬虫的一些工作,有时候都会用到selenium去对chrome执行自动化操作,这里介绍一下如何使用docker快捷方便的部署相关应用。1.selenium+chrome镜像通过dockersearchselenium我们发现,有一个docker镜像叫做sele......