当前位置: 首页 > article >正文

selenium4.0 入门案例

from selenium import webdriver
import time
#创建webdriver对象,把驱动放置到了系统环境变量中,可不带参数创建
# driver =webdriver.Firefox()
driver = webdriver.Chrome()
#使用浏览器打开指定页面
driver.get('http://www.baidu.com')

time.sleep(5)
#回收资源,关闭浏览器
driver.quit()

定位元素:4.0和之前的有区别,需要先导入by包


from selenium import webdriver
from selenium.webdriver.common.by import By
import time

#创建webdriver对象,把驱动放置到了系统环境变量中,可不带参数创建
# driver =webdriver.Firefox()
driver = webdriver.Chrome()
#使用浏览器打开指定页面
driver.get('http://www.baidu.com')

#定位元素
driver.find_element(By.ID, 'kw').send_keys("书包")
driver.find_element(By.ID, 'su').click()

time.sleep(5)
#回收资源,关闭浏览器
driver.quit()

css选择器的方式

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

通过XPATH定位

用右击copy,复制xpath容易有冗余,一旦后期变化不好更改

可以使用插件

或者用F12,点击elements后,输入Ctrl+f

在选择最佳定位方式时,通常遵循以下原则:

  • 首选ID定位,因为ID是唯一的且定位速度快。
  • 如果没有ID,则考虑使用Name或CSS选择器定位。
  • XPath定位虽然功能强大,但使用时需谨慎,避免因为页面结构变化而导致定位失败。
  • 尽量避免使用Tag Name定位,因为找到的元素可能不唯一

//*[@aria-label="百度热搜"] 

在代码里敲要把双引号变成单引号


from selenium import webdriver
from selenium.webdriver.common.by import By
import time

#创建webdriver对象,把驱动放置到了系统环境变量中,可不带参数创建
# driver =webdriver.Firefox()
driver = webdriver.Chrome()
#使用浏览器打开指定页面
driver.get('http://www.baidu.com')

#定位元素
# driver.find_element(By.ID, 'kw').send_keys("书包")
# driver.find_element(By.ID, 'su').click()

#定位链接
# driver.find_element(By.LINK_TEXT,'hao123').click()

driver.find_element(By.XPATH,"//*[@aria-label='百度热搜']").click()

time.sleep(5)
#回收资源,关闭浏览器
driver.quit()
  • 确保XPath表达式正确无误,因为错误的表达式会导致元素定位失败。
  • 使用相对而非绝对的XPath表达式,以增加代码的健壮性和可维护性。例如,避免使用基于索引的表达式(如//div[1]/p),除非绝对必要,因为页面结构的变化可能会导致索引失效。
  • 在使用文本内容进行定位时,要考虑到文本可能包含子元素、空格或换行符的情况,这些都会影响XPath表达式的准确性。
  • //input[@name='username']:这表示查找任何名为input的元素,其name属性值为username//表示在整个文档中搜索,不限于特定层级。

http://www.kler.cn/a/539557.html

相关文章:

  • openAI官方prompt技巧(一)
  • 六年级写景作文:美丽的春天
  • 大模型中设计的精度(FP8,FP16,FP32,混合精度训练,精度量化)相关总结
  • StochSync:可在任意空间中生成360°全景图和3D网格纹理
  • 【AIGC】冷启动数据与多阶段训练在 DeepSeek 中的作用
  • 数据结构与算法-递归
  • Web开发概念解析
  • 云开发 AI 实战—基于腾讯云开发 Copilot快速开发陕西家乡小程序实战
  • Linux proc虚拟文件系统
  • 使用DeepSeek实现AI自动编码
  • LeetCode 199. 二叉树的右视图 题解
  • Node.js的API之dgram的用法详解
  • 位图与位运算的深度联系:从图像处理到高效数据结构的C++实现与优化
  • stm32电机驱动模块
  • npm link,lerna,pnmp workspace区别
  • 机器学习-线性回归(最大似然估计)
  • 最新的构建Jenkins插件的方式
  • 基于无线的分布式温度采集报警系统设计(论文+源码)
  • Git 日志查看与版本回溯
  • 软件工程的熵减:AI如何降低系统复杂度
  • 在 Java 中执行一个复杂的 SQL 查询(包含多表连接、子查询和聚合函数),如何确保查询的性能?请列举至少三条措施。请简要描述其工作原理?
  • 【课程设计参考】迷宫小游戏 :基于 Python+Pygame+AI算法
  • 大语言模型实践——基于现有API的二次开发
  • fetch请求总结,fastadmin中后台接口强制返回json数据
  • DeepSeek本地化部署【window下安装】【linux下安装】
  • 【React】页面刷新后状态丢失的原因与解决方案