xpath的使用以及原理-元素定位

# 查找文本框输入文本
driver.find_element(By.CLASS_NAME,"nav-search-input").send_keys("i_cecream查找到了")
#查找到之后点击
driver.find_element(By.CLASS_NAME,"nav-search-btn").click()time.sleep(30)

selenium4的解析。

client调用server之后调用browser

browser返回是否错误到server到client

browser到webdriver到client

元素定位  

常用的是ID  CLASSS

常用css和xpath定位

driver.find_element(By.CLASS_NAME,"channel-link").click()
# 多个classname
for ele in driver.find_elements(By.CLASS_NAME,"channel-link"):print(ele.text)
driver.find_element(By.TAG_NAME,"input").send_keys("学习selenium")# 最大化窗口
driver.maximize_window()
driver.get("https://www.baidu.com")
driver.find_element(By.NAME,"wd").send_keys("根据name查找")# 点击链接
driver.find_element(By.LINK_TEXT,"新闻").click()

# 点击链接
driver.find_element(By.LINK_TEXT,"新闻").click()# 模糊匹配
driver.find_element(By.PARTIAL_LINK_TEXT,"新闻").click()
from selenium import webdriverimport time
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManageroption = webdriver.ChromeOptions()
option.add_argument("start-maximized")driver=webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=option)driver.get("http://www.baidu.com")
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("selector")
driver.find_element(By.CSS_SELECTOR,"#su").click()
time.sleep(5)
driver.close()
# driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("selector")
# driver.find_element(By.CSS_SELECTOR,"#su").click()
# driver.find_element(By.CSS_SELECTOR,"[name='wd']").send_keys("selector2342")
# 根据标签属性定位
driver.find_element(By.CSS_SELECTOR,"a[href='https://pan.baidu.com?from=1026962h']").click()# 模糊匹配
driver.find_element(By.CSS_SELECTOR,"a[href*='pan.baidu.com']").click()
# 模糊匹配开头,后面匹配
driver.find_element(By.CSS_SELECTOR,"a[href^='https://pan.baidu.com']").click()
# xpath
driver.find_element(By.XPATH,"//input[@id='kw']").send_keys("ke")driver.find_element(By.XPATH,"//input[starts-width(@title,'text')]").send_keys("ke")# driver.find_element(By.XPATH,"//span[text()='']").click()
# 显示等待 要等待所有加载
#引入WebDriverWait
from selenium.webdriver.support.ui import WebDriverWait
#引入expected_conditions类,并重命名为EC
from selenium.webdriver.support expected_conditions as EC
#设置等待
wait = WebDriverWait(driver,10,0.5)
wait.until(EC.presence_of_element_located((By.ID,'KW')))# 隐式等待
# driver.implicitly_wait(10)

#设置等待
# wait = WebDriverWait(driver,10,0.5)
# wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'.ivu-radio-input')))driver.find_elements(By.XPATH,"//input[@type='radio' and @class='ivu-radio-input']")[1].click()
driver.find_elements(By.XPATH,"//input[@type='radio' and @class='ivu-radio-input']")[2].click()
driver.find_elements(By.XPATH,"//input[@type='radio' and @class='ivu-radio-input']")[3].click()
driver.find_element(By.XPATH, "//span[text()='Android']").click()
time.sleep(2)
driver.find_element(By.XPATH, "//span[text()='Windows']").click()
time.sleep(2)
driver.find_element(By.XPATH,"//span[text()='Android']/preceding-sibling::span/input").click()
time.sleep(5)
driver.find_element(By.XPATH, "//span[text()='香蕉']").click()
select = Select(driver.find_element(By.ID,'s1'))
select.select_by_value("1")

选择

select = Select(driver.find_element(By.ID,'s1'))
select.select_by_index(1)

级联选择

driver.find_element(By.XPATH,"//input[@class='ivu-input ivu-input-default']").click()
driver.find_element(By.XPATH,"//li[contains(text(),'北京')]").click()
driver.find_element(By.XPATH,"//li[contains(text(),'王府井')]").click()

alert

upload= driver.find_element(By.XPATH,'//input[@id="file"]')
upload.send_keys(r"G:\pythonpro\demotest\1")
driver.find_elements(By.XPATH,'//input[@name="submit"]').clear()

进入iframe 切换到iframe和父元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024团体程序设计天梯赛L1-103 整数的持续性

题目链接L1-103 整数的持续性 #include<iostream> #include<stdio.h> #include<algorithm> using namespace std; struct node{int x;int d; }p[2000]; bool cmp(node a, node b) {if (a.d b.d) return a.x < b.x;return a.d>b.d; } int cnt, cntt; v…

信号----硬件中断

硬件中断 键盘组合键是向进程发送信号&#xff0c;那么键盘数据是如何输入到内核中&#xff0c;然后变成信号的&#xff1f;这个信号又是由谁发送给进程的&#xff1f; 当键盘被按下&#xff0c;操作系统先知道用户用键盘输入了内容 那么操作系统是如何知道键盘上有内容了&…

【Camera Sensor Driver笔记】二、点亮指南之Sensor Module XML

Camera Sensor module XML详解&#xff1a; cameraId 与 slot id 一一对应 &#xff08;即&#xff1a;dtsi中相对应的sensor的 cell-index &#xff09; moduleName 模组厂名称 sensorName sensor 名称 actuatorName 马达名称 oisName …

学习亚马逊云科技AWS云计算技术的三款官方免费3A游戏大作

玩3A大作免费电脑游戏&#xff0c;就能成为AWS云架构师、云开发大&#x1f42e;&#xff1f;这么好的事尊的假的&#xff1f;小李哥今天就来给大家介绍&#xff0c;如何通过玩AWS官方的定制版虚拟人生、炉石传说和密室逃脱游戏学习AWS。这三个游戏完全免费&#xff0c;没有任何…

如何利用pg_dump和pg_restore迁移从一个PostgreSQL服务器到另一个服务器,同时保持一致性与高效性?

文章目录 解决方案1. 使用pg_dump导出数据2. 将导出的数据复制到目标服务器3. 使用pg_restore导入数据保持一致性与高效性的策略一致性高效性 示例代码导出数据复制数据到目标服务器在目标服务器上解压并导入数据 PostgreSQL数据库的迁移是一个常见的任务&#xff0c;特别是在升…

如何在PostgreSQL中使用CTE(公共表表达式)来简化复杂的查询逻辑?

文章目录 解决方案步骤示例代码 结论 在处理复杂的SQL查询时&#xff0c;我们经常会遇到需要多次引用子查询或中间结果的情况。这可能会使得查询变得冗长且难以理解。为了解决这个问题&#xff0c;PostgreSQL&#xff08;以及其他一些SQL数据库系统&#xff09;引入了公共表表达…

springdoc-openapi使用

springdoc-openapi使用 一、引入pom二、新增配置类OpenApiConfig四、Controller层示例五、配置文件新增内容六、验证 一、引入pom <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1…

【WSL】单机大模型前的基础环境配置

前言&#xff1a;在上一篇文章中&#xff0c;我们完成了WSL的部署&#xff0c;但是在大模型搭建&#xff08;尤其是Langchain&#xff09;前&#xff0c;还碰到了不少的坑&#xff0c;查找了不少的文章&#xff0c;所以本篇文章就做一个记录&#xff0c;避免以后再走冤枉路。 …

并发编程 可见性、原子性和有序性,如何解决

可见性&#xff0c;原子性和有序性 CPU&#xff0c;内存&#xff0c;I/0 三者在速度上存在很大差异&#xff0c;大概是CPU耗时一天 内存耗时一年&#xff0c;内存耗时一天 /O耗时十年 CPU 增加了缓存&#xff0c;以均衡与内存的速度差异;操作系统增加了进程、线程&#xff0…

oracle一次sql优化笔记

背景&#xff1a;两个百万级数据量表需要连接&#xff0c;加全索引的情况下速度仍不见改善&#xff0c;苦查一下午解决问题未遂。 解决&#xff1a;经大佬指点了解到oracle优化器提示&#xff0c;使用/* USE_HASH(table1 table2) */或者/* USE_MERGE(table1 table2) */来指导优…

P5732 【深基5.习7】杨辉三角

此题可以为杨辉三角&#xff0c;可以看一下这篇文章: 传送门 AC代码&#xff1a; #include<iostream>using namespace std;const int N 30; int arr[N][N];int main() {int n;cin >> n ;arr[1][1] 1;for(int i1;i<n;i){for(int j1;j<i;j){if(j 1 || j …

Callable and FutureTask

Callable 由关系图可知&#xff0c;Callable和Runnable一样&#xff0c;也是一个函数式接口&#xff0c;可以使用Lambda表达式 与之不同的是&#xff0c;其内部的call()方法可以抛出异常且能return一个返回值 Callable<Object> callable new Callable() {Overridepublic…

网上赚钱新姿势:日赚二三十,十大靠谱平台任你选!

互联网时代下&#xff0c;网络兼职已成为许多人追求额外收入的热门选择。互联网的广泛普及与发展&#xff0c;不仅让人们轻松获取海量信息&#xff0c;更为我们提供了多样化的兼职机会。这些兼职工作不仅时间自由&#xff0c;而且种类繁多&#xff0c;适合各种人群参与。接下来…

【AR开发示例】实现AR管线巡检

写在前面的话 这是一篇旧文档&#xff0c;代码仓库见 https://gitee.com/tanyunxiu/AR-pipe 本文档是基于超图移动端SDK的AR模块开发的示例&#xff0c;仅供参考&#xff0c;SDK在持续迭代中&#xff0c;相关描述可能有变化。 示例介绍 这是一个使用AR查看墙内管线的基础示…

Spring Cloud 运维篇1——Jenkins CI/CD 持续集成部署

Jenkins 1、Jenkins是什么&#xff1f; Jenkins 是一款开源 CI/CD 软件&#xff0c;用于自动化各种任务&#xff0c;包括构建、测试和部署软件。 Jenkins 支持各种运行方式&#xff0c;可通过系统包、Docker 或者一个独立的 Java 程序。 Jenkins Docker Compose持续集成流…

k8s安装,linux-ubuntu上面kubernetes详细安装过程

官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/ 环境配置 该部分每个主机都要执行 如果你确定不需要某个特定设置&#xff0c;则可以跳过它。 设置root登录 sudo passwd root sudo vim /etc/ssh/sshd_config Perm…

HarmonyOS NEXT 使用XComponent + Vsync 实现自定义动画

介绍 XComponent 提供了应用在 native 侧调用 OpenGLES 图形接口的能力&#xff0c;本文主要介绍如何配合 Vsync 事件&#xff0c;完成自定义动画。在这种实现方式下&#xff0c;自定义动画的绘制不在 UI 主线程中完成&#xff0c;即使主线程卡顿&#xff0c;动画效果也不会受…

晶圆制造之MPW(多项目晶圆)简介

01、MPW是什么&#xff1f; 在半导体行业中&#xff0c;MPW 是 "Multi Project Wafer" 的缩写&#xff0c;中文意思是多项目晶圆。MPW 的主要思想是将使用相同工艺的多个集成电路设计放在同一晶圆片上进行流片&#xff08;即制造&#xff09;。这种方法允许多个设计共…

java学习笔记6

11. 类的封装 ​ 在Java中,**封装(Encapsulation)**是面向对象编程中的重要概念,它指的是将类的数据(属性)和行为(方法)绑定在一起,并对外部隐藏数据的具体实现细节,只通过公共方法来访问和操作数据。这有助于提高代码的安全性、可维护性和灵活性。 11.1 为什要封装 …

Python exe 文件反编译为 Python 脚本

文章目录 前言版本反编译Python 可执行文件&#xff08;.exe&#xff09;反编译打包一个简单的 .exe 可执行文件提取 pyc 文件使用脚本提取使用工具提取 将 .pyc 文件转换为 Python 脚本入口运行类非入口运行类转换补全后的 pyc 文件uncompyle6 反编译在线工具 可能遇到的问题P…