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

Selenium入门

Selenium 是一个用于自动化 web 应用程序测试的工具,它支持多种浏览器和编程语言。

下载驱动程序:根据你的浏览器类型和版本,下载相应的 WebDriver。例如,Chrome 浏览器需要 ChromeDriver。

安装 Selenium 库
pip install selenium

导入

from selenium import webdriver

创建浏览器对象

test_webdriver = webdriver.Chrome(service=Service(r"驱动路径"))
test_webdriver.get("https://www.taobao.com")  # 访问网址

selenium元素定位

1. ID定位

通过元素的ID属性进行定位。ID属性在HTML页面中通常是唯一的,因此这种方法定位准确且高效。

driver.find_element(By.ID, "element_id")

2. Name定位

通过元素的name属性进行定位。与ID不同,name属性在页面中可能不是唯一的,但在某些情况下仍然可以作为定位的依据。

driver.find_element(By.NAME, "element_name")

3. TagName定位

通过元素的标签名(TagName)进行定位。由于标签名在页面中往往不是唯一的,因此这种方法定位到的可能是多个元素。

driver.find_elements(By.TAG_NAME, "input")(注意这里使用了find_elements来获取元素列表)

4. ClassName定位

通过元素的class属性进行定位。class属性可能包含多个值,且值之间用空格分隔。需要注意的是,如果class属性值中包含空格或特殊字符,可能需要进行转义处理。

driver.find_element(By.CLASS_NAME, "class_name")

5. LinkText定位

通过超链接的完整文本进行定位。这种方法适用于定位<a>标签的文本内容。

driver.find_element(By.LINK_TEXT, "完整链接文本")

6. PartialLinkText定位

通过超链接的部分文本进行定位。这种方法适用于链接文本较长或只需匹配部分文本的情况。

driver.find_element(By.PARTIAL_LINK_TEXT, "部分链接文本")

7. CSS Selector定位

通过CSS选择器进行定位。CSS选择器是一种强大的定位方式,它支持多种选择策略,如ID选择器、类选择器、属性选择器、伪类选择器等。

driver.find_element(By.CSS_SELECTOR,"#id_value") 或 driver.find_element(By.CSS_SELECTOR, ".class_value")

8. XPath定位

通过XPath表达式进行定位。XPath是一种在XML文档中查找信息的语言,由于HTML可以看作是XML的一种实现,因此XPath也可以用于定位HTML页面中的元素。XPath表达式非常灵活,几乎可以定位到页面上的任何元素。

driver.find_element(By.XPATH, "//input[@id='element_id']")

 Selenium访问元素

在使用Selenium进行Web自动化测试或爬虫时,经常需要访问和操作网页上的元素。Selenium提供了多种方式来访问元素的信息,包括元素的属性、文本内容、标签名等。

1. 获取元素的文本内容

使用text属性可以获取元素的文本内容(即元素内部的文本,不包括标签)。

element_text = element.text

 2. 获取元素的属性值

使用get_attribute(attribute_name)方法可以获取元素的指定属性值。例如,获取链接的href属性或图片的src属性。

href_value = element.get_attribute('href')  
src_value = element.get_attribute('src')

3. 获取元素的标签名

使用tag_name属性可以获取元素的标签名(例如,<div><a>等)。

tag_name = element.tag_name

元素操作

点击:使用click()方法模拟鼠标点击。

输入文本:使用send_keys()方法向输入框等元素发送文本。

清空内容:对于输入框等元素,使用clear()方法清空内容。

页面导航

使用get()方法打开新页面。

使用back()forward()方法模拟浏览器的后退和前进操作。

使用refresh()方法刷新当前页面。

http://www.lryc.cn/news/446948.html

相关文章:

  • USB 3.1 Micro-A 与 Micro-B 插头,Micro-AB 与 Micro-B 插座,及其引脚定义
  • MySQL多版本并发控制MVCC实现原理
  • 【并查集】[ABC372E] K-th Largest Connected Components 题解
  • HarmonyOS面试题(持续更新中)
  • QT中QWidget和QObject的区别与联系是什么
  • 解决macOS安装redis以后不支持远程链接的问题
  • 2024年研究生数学建模“华为杯”E题——肘部法则、k-means聚类、目标检测(python)、ARIMA、逻辑回归、混淆矩阵(附:目标检测代码)
  • 绝了,自从用了它,我每天能多摸鱼2小时!
  • C语言指针系列1——初识指针
  • 传神论文中心|第26期人工智能领域论文推荐
  • NLP基础1
  • 001.docker30分钟速通版
  • Kafka 在 Linux 下的集群配置和安装
  • Python--操作列表
  • JMeter(需要补充请在留言区发给我,谢谢)
  • 线程池的执行流程和配置参数总结
  • node-red-L3-重启指定端口的 node-red
  • (done) 使用泰勒展开证明欧拉公式
  • 红队apt--邮件钓鱼
  • 十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)
  • DNS协议解析
  • 每日一题——第一百零八题
  • 使用Python免费将pdf转为docx
  • 树莓派4B+UBUNTU20.04+静态ip+ssh配置
  • C#实现指南:将文件夹与exe合并为一个exe
  • linux信号 | 学习信号三步走 | 全解析信号的产生方式
  • C++ 刷题 使用到的一些有用的容器和函数
  • 【Kubernetes】常见面试题汇总(三十四)
  • C++标准库双向链表 list 中的insert函数实现。
  • 华为机考练习(golang)