Python中Selenium的基本使用步骤

 更新时间:2023年11月10日 10:03:44   作者:落慯  
Selenium是一个用于自动化浏览器操作的Python库,常用于Web应用的测试和爬虫等场景,本文给大家介绍Python中Selenium的基本使用教程,感兴趣的朋友一起看看吧

一、Selenium是什么?

Selenium是一个用于自动化浏览器操作的Python库,常用于Web应用的测试和爬虫等场景。

二、使用步骤  

1.引入库

安装Selenium库:使用pip命令安装Selenium库。可以运行以下命令进行安装:

pip install selenium==4.5

目前有更高版本4.10,但是高版本有些参数被改了或舍弃了,使用起来要自己去找官方文档,不方便。而且过高的Selenium版本和Chrome浏览器版本不兼容,之前用的selenium4.10打开chrome浏览器会秒退,后来将版本换为4.5就解决了 。

2.下载浏览器驱动

Selenium需要使用浏览器驱动来控制浏览器。这里以ChromeDriver为例,下载地址为:https://chromedriver.storage.googleapis.com/index.html

根据自己的Chrome版本进行下载

 我的是版本到了115,但是ChromeDriver目前只有114的,选最新的版本,目前没遇见问题。

3.配置浏览器驱动

将下载的chromedriver.exe文件放置在与你的Python脚本相同的目录下

并将浏览器驱动添加到系统的环境变量中,或将其路径配置为Selenium的WebDriver对象的参 数,在计算机上搜索高级系统设置->环境变量->path->新建->复制路径->确定。

4.创建WebDriver对象

 使用Selenium的WebDriver对象来控制浏览器。根据使用的浏览器类型和驱动的配置,创建对应   的WebDriver对象。

from selenium import webdriver
# 创建Chrome浏览器的WebDriver对象
driver = webdriver.Chrome()

 webdriver.Chrome的常用参数

4.1.options 

一个Options对象,用于配置Chrome浏览器的选项。你可以使用该对象来设置浏览器窗口大小、启用/禁用浏览器的扩展程序、设置用户代理等等。

from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--start-maximized')  # 最大化窗口
options.add_argument('--disable-extensions')  # 禁用扩展程序
driver = webdriver.Chrome(options=options)

 4.2.service

一个Service对象,用于配置和启动ChromeDriver服务。如果没有显式指定,它将搜索系统的PATH环境变量来找到ChromeDriver服务。

from selenium.webdriver.chrome.service import Service
service = Service('chromedriver.exe')
driver = webdriver.Chrome(service=service)

4.3.desired_capabilities

一个字典,用于设置WebDriver的所需能力。你可以使用该字典来设置浏览器的版本、操作系统、浏览器名称等等。

caps = {'browserName': 'chrome', 'version': '', 'platform': 'ANY'}
driver = webdriver.Chrome(desired_capabilities=caps)

4.4.executable_path 

指定Chrome驱动的路径。如果没有显式指定,它将搜索系统的PATH环境变量来找到Chrome驱动程序。貌似被弃用了,我使用的时候报出警告了,用第二个service替换就行了。

5.WebDriver的属性 

# 打开指定的网页
driver.get("https://www.baidu.com")
#获取当前页面的URL
current_url = driver.current_url
#获取当前页面的标题
title = driver.title
#获取当前页面的源代码
page_source = driver.page_source
#获取当前打开的所有窗口的句柄
window_handles = driver.window_handles
#获取当前窗口的句柄
current_window_handle = driver.current_window_handle
#获取当前WebDriver的所需能力
desired_capabilities = driver.desired_capabilities
#获取当前WebDriver的能力
capabilities = driver.capabilities

6.元素定位 

Selenium提供了多种元素定位的方法,可以根据元素的属性、文本、位置等进行定位。以下是一些常用的元素定位方法:

旧版的selenium使用方法:

#通过id定位元素
element = driver.find_element_by_id("element-id") 
#通过class name定位元素
element = driver.find_element_by_class_name("element-class")
#通过name属性定位元素
element = driver.find_element_by_name("element-name")
#通过tag name定位元素
element = driver.find_element_by_tag_name("element-tag")
#通过链接文本定位元素
element = driver.find_element_by_link_text("link-text")
#通过部分链接文本定位元素
element = driver.find_element_by_partial_link_text("partial-link-text")
#通过CSS选择器定位元素
element = driver.find_element_by_css_selector("css-selector")
#通过XPath表达式定位元素
element = driver.find_element_by_xpath("xpath-expression")

新版的selenium有两种定位方式,element = driver.find_element("id", "element-id")和element = driver.find_element(By.ID,"su") 这两种方式本质上是等效的,都是通过元素的id属性进行定位。第一种方式中,使用了字符串来表示定位策略,而第二种方式中,使用了By类来表示定位策略。By类是Selenium提供的一组常用的定位策略,用于更清晰地表示定位方式。通过使用By类,可以让代码更易读且具备更好的可维护性。

from selenium.webdriver.common.by import By
# 第一种方式:使用定位策略和定位值定位元素
element1 = driver.find_element("id", "element-id")
element1 = driver.find_element("name", "element-name")
# 第二种方式:使用By类结合定位策略定位元素
element2 = driver.find_element(By.ID, "element-id")
element2 = driver.find_element(By.NAME, "element-name")

 其余旧版的定位方法都可用转换成这两种方式

三.打开百度网页的简单示例 

该示例演示了如何获取百度页面的源码,如何在百度搜索框里输入信息并点击查找 。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
#chromedriver.exe要与该python文件放在同一个目录下
service = Service("chromedriver.exe")
options = Options()
#初始窗口最大化
options.add_argument('--start-maximized')
driver = webdriver.Chrome(service=service, options=options)
url = "https://www.baidu.com"
driver.get(url)
#获取网页的源码
content = driver.page_source
print(content)
#根据id定位到百度搜索的输入框
input = driver.find_element(By.ID,"kw")
#在输入框中输入Python
input.send_keys('Python')
time.sleep(2)
#根据id定位到百度一下的按钮
button = driver.find_element(By.ID,"su")
#按钮点击一下
button.click()
time.sleep(2)
#执行JavaScript脚本,该脚本表示鼠标滚轮滑动到距离顶部100000,即滑动到底部
js_button = 'document.documentElement.scrollTop=100000'
driver.execute_script(js_button)
time.sleep(2)
#根据Xpath表达式定位下一页的按钮,并点击一下
next_page = driver.find_element(By.XPATH,"//a[@class='n']")
next_page.click()
time.sleep(2.1)
#网页后退
driver.back()
time.sleep(1.5)
#网页前进
driver.forward()
time.sleep(1.8)
#网页关闭
driver.quit()

总结

到此这篇关于Python中Selenium的基本使用的文章就介绍到这了,更多相关Python Selenium使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决pytorch GPU 计算过程中出现内存耗尽的问题

    解决pytorch GPU 计算过程中出现内存耗尽的问题

    今天小编就为大家分享一篇解决pytorch GPU 计算过程中出现内存耗尽的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 使用Python搭建服务器公网展示本地电脑文件的操作过程

    使用Python搭建服务器公网展示本地电脑文件的操作过程

    这篇文章主要介绍了使用Python搭建服务器公网展示本地电脑文件,今天我们就尝试用python,建立一个简单的http服务器,用来展示本地电脑上指定的目录和文件,需要的朋友可以参考下
    2023-08-08
  • Python图像处理之图像金字塔详解

    Python图像处理之图像金字塔详解

    这篇文章主要介绍了图像处理中的图像金字塔,包括图像向上取样和向下取样。文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编学习一下
    2022-02-02
  • Python入门教程之三元运算符的使用详解

    Python入门教程之三元运算符的使用详解

    三元运算符也称为条件表达式,是根据条件为真或假来评估某些内容的运算符。它在2.5 版本中被添加到 Python 中。 本文将通过示例详细说说三元运算符的使用,需要的可以参考一下
    2022-09-09
  • 手把手教你实现Python重试超时装饰器

    手把手教你实现Python重试超时装饰器

    这篇文章主要为大家介绍了实现Python重试超时装饰器教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2023-05-05
  • 浅谈python中的多态

    浅谈python中的多态

    在面向对象程序设计中,除了封装和继承特性外,多态也是一个非常重要的特性。让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数
    2021-06-06
  • python shutil.move移动文件或目录方式

    python shutil.move移动文件或目录方式

    `shutil.move()`函数可以移动文件或目录,移动目录时,如果目标目录不存在,会创建该目录并将源目录内容移动到新目录;如果目标目录存在,则将源目录移动到目标目录下,移动文件时,如果目标路径是目录,则将文件移动到该目录下并重命名
    2024-12-12
  • Python中如何将一个类方法变为多个方法

    Python中如何将一个类方法变为多个方法

    这篇文章主要介绍了Python中如何将一个类方法变为多个方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • pytorch中nn.Sequential和nn.Module的区别与选择方案

    pytorch中nn.Sequential和nn.Module的区别与选择方案

    在 PyTorch 中,构建神经网络模型有两种主要方式:nn.Sequential 和 nn.Module,它们各有优缺点,适用于不同的场景,下面通过示例给大家讲解pytorch中nn.Sequential和nn.Module的区别与选择方案,感兴趣的朋友一起看看吧
    2024-06-06
  • python 实现字符串下标的输出功能

    python 实现字符串下标的输出功能

    这篇文章主要介绍了python 简单的实现字符串下标的输出,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论