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

news2024/9/28 23:26:29

如有错误,敬请谅解!

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

        我们在学习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.coloradmin.cn/o/546165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第四十六天 | bool的背包题,细节多

139.单词拆分 文档讲解:代码随想录 (programmercarl.com) 视频讲解:动态规划之完全背包,你的背包如何装满?| LeetCode:139.单词拆分_哔哩哔哩_bilibili 状态:不会做,不知道怎么把bool类型与背包…

推荐系统系列之推荐系统概览(下)

在推荐系统概览的第一讲中,我们介绍了推荐系统的常见概念,常用的评价指标以及首页推荐场景的通用召回策略。本文我们将继续介绍推荐系统概览的其余内容,包括详情页推荐场景中的通用召回策略,排序阶段常用的排序模型,推…

软件测试实验:loadrunner的高级使用

目录 前言实验目的实验内容实验要求实验过程loadrunner中插入事务与集合点loadrunner中插入检查点loadrunner中参数化-table分析报告功能loadrunner手动设置场景loadrunner监视图标 总结 前言 本实验主要介绍了loadrunner这一强大的性能测试工具的高级使用方法,包括…

python实现九宫格的车辆路径轨迹上位机界面

实验环境:wxFormBuilder v3.5 python3.7.5 MC9S12G128开发板 基本功能:控制开发板上的按键,模拟车辆移动的上下左右四个方位,通过can通信告诉上位机界面,车辆轨迹的移动方位; 1. python重新封装control…

技巧:jetbrain全家桶系列如何撤销已经提交本地仓库但还没push的commit

目录 1. 哎呀,不小心把不能提交的“机密”加入commit了2. 使用reset来修复的话要注意有坑,选Soft和Mixed,千万别选Hard和Keep3. 使用revert,只能修修补补,但commit还在,当然有好处是会留下使用痕迹&#xf…

异常处理机制

编程错误 编写程序时遇到的错误可大致分为 2 类,分别为语法错误和运行时错误。 语法错误 语法错误,也就是解析代码时出现的错误。当代码不符合Python语法规则时,Python解释器在解析时就会报出SyntaxError语法错误,与此同时还会…

服务(第二十六篇)redis的主从复制、哨兵、集群

主从复制: 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 原理: 主从关系确定…

[算法前沿]--009-HuggingFace介绍(大语言模型底座)

基础介绍 HuggingFace 是一家专注于自然语言处理(NLP)、人工智能和分布式系统的创业公司,创立于2016年。最早是主营业务是做闲聊机器人,2018年 Bert 发布之后,他们贡献了一个基于 Pytorch 的 Bert 预训练模型,即 pytorch-pretrained-bert,大受欢迎,进而将重心转向维护…

PoseiSwap以2500万美元估值,再获新一轮融资

近日,Nautilus Chain 上的首个 DEX PoseiSwap 宣布,其目前已经以 2500 万美元的估值,从 Gate Labs、Emurgo Ventures、Republic以及Cipholio Ventures 等行业顶级投资机构中,获得了新一轮的融资,不过目前该融资的具体数…

asp.net网上捐赠系统

一该源码功能十分的全面,具体介绍如下: 本版本软件主要完成三个功能: 1、建立网上捐赠功能 实现网上捐赠程序自动化,智能化,在捐赠者与受捐者填写各种资料后,自动保存方便以后调阅查询&#xff0c…

Java【网络编程1】详解DatagramSocket和DatagramPacket类, 逐行代码解析如何服务器客户端通信(附代码)

文章目录 前言一、认识 Socket(套接字), TCP 协议和 UDP 协议1, 什么是 Socket(套接字)2, 浅谈 TCP 协议和 UDP 协议的区别和特点 二、基于 UDP 协议的 Socket API1, DatagramSocket 类2, DatagramPacket 类 三、逐行代码解析网络编程1, 逐行解析客户端1.1, 核心成员方法 start…

【C++】-类和对象完结(内部类、匿名对象以及编译器的优化的讲解)(下)

💖作者:小树苗渴望变成参天大树 ❤️‍🩹作者宣言:认真写好每一篇博客 💨作者gitee:gitee 💞作者专栏:C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 …

m1安装svn

背景:电脑是mac m2,好多软件都不太兼容,安装软件成了一个问题,想着装一个SVN,跟大家一起协同开发,这下可麻烦死了,😄,终于弄明白用brew命令了,然后就用brew命…

Metasploitable2靶机渗透学习

目录 一、介绍 二、环境 三、渗透攻击 1.前期渗透 1.1主机发现 1.2.端口扫描 1.3.测试漏洞 2.弱密码漏洞 2.1系统弱密码登录(telnet :23端口) 2.2 MySQL弱密码登录(端口:3306) 2.3 PostgreSQL弱…

K8s全套快速入门

K8s快速入门 1 介绍 google开源的容器化管理工具机器数量十几台、上百台时,就可以考虑使用k8s高可用、自动容灾恢复、灰度更新、一键回滚历史版本、方便伸缩扩展等 k8s集群架构: 通常:一主多从 master:主节点,控制平台…

LeetCode 栈和队列OJ题目分享

目录 有效的括号(括号匹配)用栈实现队列用队列实现栈设计循环队列 有效的括号(括号匹配) 链接: link 题目描述: 题目思路: 1、如果是左括号“( { [ ”就入栈 2、如果是右括号“) }…

Redis--弱口令未授权访问漏洞

Redis--弱口令未授权访问漏洞 一、漏洞简介二、危险等级三、漏洞影响四、入侵事件五、漏洞复现--Redis CrackIT入侵事件5.1、以root启动的redis,可以远程登入到redis console--------A主机5.2、生成公钥5.3、执行: redis-cli flushall 清空redis(非常暴力&#xff0…

2023年春秋杯网络安全联赛 春季赛 wp

文章目录 Cryptocheckinbackdoor WebPhpstudyEasypyezrustqqcms MISCSudohappy2forensic盲人会藏在哪里piphackwordle PWNp2048easy_LzhiFTP_CHELL Crypto checkin 第一部分求解一下pell函数得到x,y def solve_pell(N, numTry 100):a[]b[]cf continued_fraction(sqrt(N))f…

C++的priority_queue

priority_queue 1.priority_queue的介绍2.priority_queue的使用3.priority的模拟实现 1.priority_queue的介绍 优先队列是一种堆,默认是大根堆,可以通过greater的仿函数可以建立小根堆empty():检测容器是否为空 size():返回容器中…

【密码学复习】第七章 公钥加密体制(二)

RSA单向陷门函数及其应用 ElGamal单向陷门函数 1)密钥生成 ① 选择一大素数p,选取Zp * 的生成元g ; ② 任选小于p的随机数x,计算y≡g x mod p; ③(y, g, p)为公开密钥, (x, g, p)为秘密密钥. 2)加密:设待加密…