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,一经查实,立即删除!

相关文章

Kimi智能助手:您的个性化AI伙伴

目录 智能对话伙伴:kimi 功能部分 对话能力:多语言支持与深度交流

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…

力扣第541题: 反转字符串 II

题目&#xff1a; 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起, 每计数至 2k 个字符&#xff0c;就反转这 2k 个字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个&#xff0c;则反转…

迎接大模型时代:程序员的挑战与应对

随着人工智能技术的迅猛发展&#xff0c;大模型已成为当前人工智能领域的重要趋势之一。大模型具有更强大的表征能力和泛化能力&#xff0c;已在自然语言处理、计算机视觉等领域取得了显著成果。然而&#xff0c;大模型的出现也给程序员带来了新的挑战和机遇。 大模型对程序员…

通过v-if渲染的element-ui表单,校验规则不生效的问题

因为form-item绑定验证事件是在mounted中进行的&#xff0c;规则变化后没有进行重新绑定验证事件&#xff0c;v-if渲染组件节点diff后被复用了&#xff0c;所以验证也就自然失效了 例如&#xff1a;通过动态选择类型来控制驾驶人是否显示&#xff0c;并且是必填项 给每一个el…

创建Vue项目后的初始化操作-解决Vue项目中盒子高度100%不生效问题

解决Vue项目中盒子高度100%不生效问题。 &#xff08;由于最近create的项目有点多&#xff0c;记录一下&#xff09;。 文章目录 方法一&#xff1a;对症下药方法二&#xff1a;偏方补充 方法一&#xff1a;对症下药 在项目根目录/public/index.html文件中的head里加入以下代码…

Java 与垃圾回收有关的方法

1. gc 调用垃圾回收器的方法是 gc&#xff0c;该方法在 System 类和 Runtime 类中都存在。 在 Runtime 类中&#xff0c;方法 gc 是实例方法&#xff0c;方法 System.gc 是调用该方法的一种传统而便捷的方法。在 System 类中&#xff0c;方法 gc 是静态方法&#xff0c;该方法…

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 …

括号成对匹配

括号成对匹配 题目 括号成对匹配。例如&#xff1a;[a{b©d}e]匹配成功&#xff0c;a(b}匹配不成功 思路 这题的考察点是栈的原理&#xff0c;可以把括号匹配看成入栈和出栈&#xff0c;如果是左边的括号一律入栈&#xff1b;如果是右括号需要先与对应的左括号进行对比…

Callable and FutureTask

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

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

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