基于Python的Selenium详细教程

一、PyCharm安装配置Selenium

本文使用环境:windows11、Python 3.10.5、PyCharm 2022.1.3、Selenium 4.3.0
需要你懂的技术:Python、HTML、CSS、JavaScript

1.Seleium安装:

在PyCharm终端或window命令窗口输入以下命令

 #查看已安装的Python包(可跳过)
 pip list
 #安装selenium 4.3.0
 pip install selenium==4.3.0

注意:在window命令窗口安装时,首先要确保Python环境变量配置正确

 ##卸载Selenium命令
 pip uninstall selenium

2.配置浏览器驱动

3. 验证

在PyCharm中新建一个Python文件,自行命名,输入以下代码:

import time
# 导入selenium包
from selenium import webdriver
# 打开Firefox浏览器
browser = webdriver.Firefox()
# 停留三秒
time.sleep(3)
# 关闭浏览器
browser.quit()

执行后,Firefox浏览器将被打开,证明Selenium安装配置完成

  • 启动Chrome浏览器
# 打开Chome浏览器
browser = webdriver.Chrome()
# 关闭浏览器
browser.quit()
  • 启动Edge浏览器
# 打开Edge浏览器
browser = webdriver.Edge()
# 关闭浏览器
browser.quit()

二、Selenium使用

2.1、加载指定页面并关闭

import time
# 导入selenium包
from selenium import webdriver
# 打开指定(Firefox)浏览器
browser = webdriver.Firefox()
# 指定加载页面
browser.get("http://www.csdn.net/")
# 设置五秒后执行下一步
time.sleep(5)
# 关闭浏览器
browser.quit()

2.2 、元素定位

元素定位方法包含了2个系列:

  • find_element()系列:用于定位单个的页面元素。
  • find_elements()系列:用于定位一组页面元素,获取到的是一组列表。

1、通过标签id属性定位

  • find_element(By.ID,'XX')id定位,根据元素的id属性值定位,最为方便且唯一,但有可能不存在,也可能动态生成。
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 打开指定(Firefox)浏览器
browser = webdriver.Firefox()
# 指定加载页面
browser.get("http://www.csdn.net")
# 通过id属性获取搜索输入框
input_text = browser.find_element(By.ID, "toolbar-search-input")
# 向搜索输入框内输入selenium
input_text.send_keys("selenium")
# 设置停留五秒后执行下一步
time.sleep(5)
# 关闭浏览器
browser.quit()

2、通过标签name属性定位

  • find_element(By.NAME,'xx')name定位,根据元素的name属性值定位,定位到的标签不一定是唯一的。
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.baidu.com/")
# 通过name属性选择文本框元素,并设置内容
browser.find_element(By.NAME,'wd').send_keys("selenium")
# 通过通过ID属性获取“百度一下”按钮,并执行点击操作
browser.find_element(By.ID,"su").click()
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()

3、通过标签class属性定位

  • find_element_by(By.CLASS_NAME,'xx')class定位,根据元素的class属性值定位,但可能受JS影响动态变化。定位到的标签不一定是唯一的。
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.baidu.com/")
time.sleep(2)
# 通过class属性选择元素
browser.find_element(By.CLASS_NAME,'s_ipt').send_keys("CSDN")
time.sleep(2)
browser.find_element(By.ID,"su").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()

4、通过标签tag定位

  • find_element(By.TAG_NAME,'xx')tag name定位,根据元素的标签名定位,定位到的标签不一定是唯一的。
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
time.sleep(2)
# 选择<button></button>标签(搜索按钮),执行点击操作
browser.find_element(By.TAG_NAME, "button").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()

5、通过link定位

  • link表示包含有属性href的标签元素,如:<a href="https://www.csdn.net">linktext</a>可以通过LINK_TEXT进行定位。
  • find_element(By.LINK_TEXT,'XX')根据链接文本全匹配进行精确定位。
  • find_element(By.PARTIAL_LINK_TEXT,'XX')根据链接文本模糊匹配进行定位。

(1)、By.LINK_TEXT精确定位

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
# 选择<a href="https://blog.csdn.net/nav/back-end">Python</a>标签,执行点击操作
browser.find_element(By.LINK_TEXT, "Python").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()

(2)By.PARTIAL_LINK_TEXT模糊定位

import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
# 选择<a href="href="https://blog.csdn.net/nav/ai">人工智能</a>标签,执行点击操作
browser.find_element(By.PARTIAL_LINK_TEXT, "人工").click()
# 停留五秒后关闭浏览器
time.sleep(3)
browser.quit()

6、通过元素的xpath定位

xpath是一种在XML文档中定位元素的语言

  • 使用绝对路径定位
    指的是从网页的HTML代码结构的最外层一层层的写到需要被定位的页面元素为止。
    绝对路径起始于/,每一层都被/所分割。
    /html/body/div[2]/form/input[3]
    注解:
    (1)可以用中括号选择分支,div[2]代表的是当前层级下的第二个div标签;
    (2)一般情况下较少使用绝对路径的方式做定位,原因在于绝对路径的表达式一般太长,不便于后期的代码维护,代码的微小改变就可能导致这个路径失效,从而无法完成元素定位。

  • 使用相对路径定位
    不是从根目录写起,而是从网页文本的任意目录开始写。
    相对路径起始于//,//所表示的含义是“任意标签下”
    //input[@id='kw']
    注解:
    (1)示例的含义:在当前页面查找任意目录下的input元素,且该元素的id属性取值为kw
    (2)在xpath里,属性以@开头
    (3)所选取的属性可以是任意属性,只要其有利于标识这个元素即可
    (4)推荐使用相对路径结合属性的这种xpath表达式,它往往更简洁更易于维护
    (5)有时候可能会出现一个属性不足以标识某个元素,可以使用逻辑运算符and来连接多个属性进行标识。//input[@xx='aa' and @yy='bb']
    (6)有时候一个元素它本身没有可以唯一标识它的属性,这时我们可以找它的上层或者上上层, 然后再往下写。//input[@xx='aa']/p

  • find_element(By.XPATH,'XX')根据元素的xpath表达式来完成定位,可以准确定位任何元素。

表达式 描述
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
* 选取属性

打开CSDN首页,按F12进入开发者模式,我们可以按照下图所示获取元素的xpath路径,我这里定位的是搜索框的xpath。
在这里插入图片描述
点击后会存在与剪切板中,Ctrl+v粘贴到代码中即可使用,这里获取到的是相对路径。

import
  • 195
    点赞
  • 1063
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
引用\[1\]:Selenium是一套完整的web应用程序测试系统,包含了测试的录制(Selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。目前,Selenium Web驱动程序最受Python和C#欢迎。Selenium测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代Web浏览器中运行。\[2\]引用\[3\]:Selenium可以用于加载指定页面并关闭浏览器,可以使用元素定位来定位页面上的元素。\[1\]\[3\] 问题: pythonselenium是什么? 回答: pythonselenium是指使用Python编写的Selenium测试脚本。Selenium是一套完整的web应用程序测试系统,可以用于测试web应用程序的功能和性能。它支持多种编程语言,包括Python,可以用于加载指定页面并关闭浏览器,以及使用元素定位来定位页面上的元素。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [基于PythonSelenium详细教程](https://blog.csdn.net/qq_43125235/article/details/125601564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python selenium基础用法详解](https://blog.csdn.net/m0_63794226/article/details/126447599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Smile丶Life丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值