selenium4.0 入门案例

ops/2025/2/10 21:43:49/
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.ppmy.cn/ops/157361.html

相关文章

JMeter使用BeanShell将数据写入CSV文件(引用deepseek)

在 JMeter 中,你可以使用 BeanShell 脚本将数据写入 CSV 文件。以下是一个示例脚本,展示了如何通过 BeanShell 将数据写入 CSV 文件。 1. 添加 BeanShell 取样器 首先,在 JMeter 中添加一个 BeanShell Sampler。 2. 编写 BeanShell 脚本 …

ML.NET库学习004:ML.NET基础知识复盘

文章目录 ML.NET库学习004:ML.NET基础知识复盘背景简单的 ML.NET 应用程序代码工作流机器学习模型基础进阶 ML.NET 架构构建管道训练模型使用模型 数据模型和架构模型部署 ML.NET库学习004:ML.NET基础知识复盘 学了几个小项目,发现好多方法莫…

提示工程:少样本提示(Few-shot Prompting)

少样本提示(Few-shot Prompting)是一种利用大语言模型从少量示例样本中学习并处理任务的方法。它的核心思想是利用大语言模型的上下文学习能力,通过在提示中增加“示例样本”来启发大语言模型达到举一反三的效果。这种方法避免了重新训练或者…

SPI通信及设备驱动

3.SPI通信-重要 参考博客:SPI原理超详细讲解---值得一看-CSDN博客 SPI(Serial Peripheral interface)**串行外围设备接口** SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节…

配置 VS Code 调试 ROS Python 脚本:完整步骤

在 Ubuntu 系统上使用 ROS 和 VS Code 进行 Python 开发时,可能会遇到一些环境配置的问题,特别是当需要加载 ROS 环境变量以及确保正确使用 Python 3 环境时。以下是如何配置 launch.json 和 tasks.json 来确保 VS Code 调试环境能够正确加载 ROS 和 Pyt…

webpack系统学习

webpack4和webpack5区别1---loader_webpack4与webpack5处理图片的不同-CSDN博客 webpack4和webpack5区别2---代码压缩_webpack4如何使用terser-CSDN博客 webpack4和webpack5区别3---缓存_cacheprune-CSDN博客 webpack4和webpack5区别4---自动清除打包目录_webpack4打包目录清…

git命令行删除远程分支、删除远程提交日志

目录 1、从本地通过命令行删除远程git分支2、删除已 commit 并 push 的记录 1、从本地通过命令行删除远程git分支 git push origin --delete feature/feature_xxx 删除远程分支 feature/feature_xxx 2、删除已 commit 并 push 的记录 git reset --hard 7b5d01xxxxxxxxxx 恢复到…

【数据结构 C 语言实现】栈和队列

目录 栈和队列1 栈1.1 栈的结构体定义1.2 基本功能实现1.2.1 创建栈1.2.2 销毁栈1.2.3 入栈1.2.4 出栈1.2.5 判断栈是否为空1.2.6 获取栈顶元素(不弹出)1.2.7 获取栈的当前大小 1.3 代码实现 2 队列2.1 循环队列的结构体定义2.2 基本功能实现2.2.1 创建循…