前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘

selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘

原创
作者头像
霍格沃兹测试开发Muller老师
发布2022-12-01 23:30:03
4.8K0
发布2022-12-01 23:30:03
举报
文章被收录于专栏:muller的测试分享

欢迎关注公众号:TestingStudio,学习更多测试开发必备技能

pycharm新建了一个项目,用于做web自动化测试,直接安装了selenium这个库,发现之前写的Selenium元素定位的代码运行之后会报错,发现是Selenium更新到新版本(4.x版本)后,以前的一些常用的代码的语法发生了改变,当然如果没有更新过或是下载最新版本的Selenium是不受到影响的,还可以使用以前的写法。接下来就是讨论有关于新版本后Selenium定位元素代码的新语法,大家后面别再踩这个坑了。

Selenium3版本的元素定位写法

代码语言:txt
复制
inputTag = driver.find_element_by_id("value")  # 利用ID定位

inputTags = driver.find_element_by_class_name("value")  # 利用类名定位

inputTag = driver.find_element_by_name("value")  # 利用name属性定位

inputTag = driver.find_element_by_tag_name("value")  # 利用标签名定位

inputTag = driver.find_element_by_xpath("value")  # 利用xpath定位

inputTag = driver.find_element_by_css_selector("value")  # 利用CSS选择器定位

在版本没有更新前我们使用的都是driver.findelement_by方法名(”value”),方法名就是by_id、by_class_name、by_name等等,而"value",则是传入的值,以百度搜索按钮为例,浏览器开发者工具可看其HTML源代码中属性id=”su“,以旧版本的写法使用id值查找搜索框应该是:

代码语言:txt
复制
searchTag = driver.find_element_by_id("su")

在版本没有更新之前,通常情况下运行都是能够正确定位到对应的元素,但是Selenium经过版本升级之后,运行后会报错,以driver.find_element_by_id(“value”)为例(其他报错也是类似下面的报错信息),运行后会出现上面的错误。

4版本的Selenium已经不再支持上面的写法,我们需要导入其他方法,改变我们的元素定位写法:

引入By方法

代码语言:txt
复制
from selenium.webdriver.common.by import By

新元素定位方法

代码语言:txt
复制
 # searchTag = driver.find_element_by_id("value")  # 利用ID定位
 # 改为:
# searchTag = driver.find_element(By.ID, "value")

 # searchTag = driver.find_element_by_class_name("value")  # 利用类名定位
# 改为:
# searchTag = driver.find_element(By.CLASS_NAME, "value")

# searchTag = driver.find_element_by_name("value")  # 利用name属性定位
# 改为:
searchTag = driver.find_element(By.NAME, "value")

# searchTag = driver.find_element_by_tag_name("value")  # 利用标签名定位
# 改为:
searchTag = driver.find_element(By.TAG_NAME, "value")

# searchTag = driver.find_element_by_xpath("value")  # 利用xpath定位
# 改为:
searchTag = driver.find_element(By.XPATH, "value")

# searchTag = driver.find_element_by_css_selector("value")  # 利用CSS选择器定位
# 改为:
searchTag = driver.find_element(By.CSS_SELETOR, "value")

改完之后就正常了,不需要去降selenium的版本了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Selenium3版本的元素定位写法
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档