解决Python爬虫中selenium模块中的find_element_by_id方法无法使用

news/2024/7/19 8:46:28 标签: python, 爬虫, selenium

如有错误,敬请谅解!

此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!

        我们在学习selenium模块的时候,经常会用到 browser.find_element_by_id命令,但随着selenuim版本更新,我们会发现运行时会报错,非常苦恼。

        示例:

from selenium import webdriver

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'https://www.baidu.com'
browser.get(url)

button = browser.find_element_by_id('su')
print(button)

        错误如下:

        点击运行后报错:AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'

'WebDriver'没有find_element_by_id这个方法

        我们发现,finde_element这个方法有,所以可以尝试换一种方法改写上述代码:

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

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'https://www.baidu.com'
browser.get(url)

button = browser.find_element(By.ID,'su')
print(button)

        可以发现只是改变了这两句:

from selenium.webdriver.common.by import By
button = browser.find_element(By.ID,'su')

        如果自己的版本是最新的版本,那么很有可能这种方法已经不用了,可以去查看一下官方的文档,或者直接查看配置文件,对自己的代码进行修改。

       以下是更新之后常见的的用法(使用前需引用:from selenium.webdriver.common.by import By):

# 根据xpath选择元素

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

# 根据css选择器选择元素
driver.find_element(By.CSS_SELECTOR, '#kw') 

# 根据name属性值选择元素
driver.find_element(By.NAME, 'wd') 

# 根据类名选择元素
driver.find_element(By.CLASS_NAME, 's_ipt') 

# 根据链接文本选择元素
driver.find_element(By.LINK_TEXT, 'hao123') 

# 根据包含文本选择
driver.find_element(By.PARTIAL_LINK_TEXT, 'hao') 

# 根据标签名选择
# 目标元素在当前html中是唯一标签或众多标签第一个时候使用
driver.find_element(By.TAG_NAME, 'title') 

# 根据id选择
driver.find_element(By.ID, 'su') 

如有错误,请联系作者删除

并恳请同行朋友予以斧正,万分感谢!


http://www.niftyadmin.cn/n/340485.html

相关文章

Golang中的同步工具sync.Cond详解

sync.Cond sync.Cond是Golang标准库提供的一个基于互斥锁/读写锁实现的条件变量类型,用于协调访问共享资源的多个goroutine。当共享资源状态发生变化时,可以通知等待条件变化而阻塞的goroutine。sync.Cond提供了一个创建方法和三个成员方法,…

js数组排序的两种方法

1. 冒泡排序 原理&#xff1a;一次比较两个相邻的数&#xff0c;如果不符合规则互换位置&#xff0c;一次比较就能够将最大或最小的值放在数组最后一位继续对除【最后一位】之外的所有元素重复上述过程。 let arr [22,1,43,12,75,32]; for(let i 0; i < arr.length - 1;…

新手建站:腾讯云轻量服务器安装宝塔镜像和使用方法

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

Cron表达式的介绍与使用

文章目录 1. 什么是Cron2. Cron表达式的结构3. 特殊字符4. 常用表达式例子 1. 什么是Cron Cron是一个用于在特定时间或间隔执行任务的计划任务工具。它在Unix、Linux和类Unix系统中广泛使用。使用Cron&#xff0c;您可以设置一个称为Cron job的任务&#xff0c;指定任务在何时…

【PaperReading】HGT:Heterogeneous Graph Transformer

Heterogeneous Graph Transformer 1. 引言2. 相关定义2.1 异构图挖掘1. 异质图2. 元关系3. 动态异质图2.2 图神经网络1. **通用GNN框架**2. **异质GNNs**3. 异质图Transformer(HGT)3.1 HGT整体架构3.2 异质互注意力(Heterogeneous Mutual Attention)3.3 异质消息传递(Heter…

Unity3d 开发Pico4程序闪退弹窗【版权保护】检测的解决方法

前言 最近在进行基于Pico4的应用开发&#xff0c;然后在部分设备上程序是无法正常进入的&#xff0c;而且总是弹出这个版权保护的窗口&#xff1a; 按理说正常的自己开发的测试的程序不应该有这种限制&#xff0c;查询后发现是 PICO 内置了版权保护机制。应用上架后&#xff0…

SQL: STUFF()和FOR XML PATH的使用

STUFF(param1, startIndex, length, param2) 将param1中自startIndex(SQL中都是从1开始&#xff0c;而非0)起&#xff0c;删除length个字符&#xff0c;然后用param2替换删掉的字符。 示例&#xff1a; select STUFF(abcdefg,1,0,1234) --结果为1234abcdefg select ST…

CSAPP复习(三)

CH1: 但是如果问什么时候 得到二进制文件 那就是汇编的时候 CH2 sizeof 的返回值是一个无符号数 然后i-D自动默认是一个无符号数 无符号数不能出现负数 所以出现了一个循环 所以永远不可能循环完成。 CH7链接 什么是静态库&#xff1f;使用静态库的优点是什么&#xff1f; …