selenium元素定位
一、介绍
概念:是一个用于Web应用程序测试的工具
特点:1、开源软件:源代码开放可以根据需要来增加工具的某些功能
2、跨平台:Linux、Windows、mac
3、核心功能:就是可以在多个浏览器上进行自动化测试
4、多语言:Java、Python、C#、Javascript、Ruby等
5、成熟稳定:被多家公司广泛使用
6、功能强大:能够实现类似商业工具的大部分功能,因为开源性,可以实现定制化功能
PS:Python虚拟环境安装
二、元素定位
# 定位 # id : find_element_by_id # name : find_element_by_name # class_name : find_element_by _class_nametag_name # tag_name:find_element_by_tag_name 标签的重复性很高 # 一般情况下,id都是唯一的,可以通过id去定位 # 查找元素(标签、标记、节点) 通过id 将“A”传输进去 driver.find_element(By.ID, "kw").send_keys("A") driver.find_element(By.ID, "su").click()
遇到的问题:
1、问题描述:在使用find_element_by_id时,没有反应。
driver.find_element_by_id("kw").send_keys("A")报错'WebDriver' object has no attribute 'find_element_by_id'
原因及解决方法:新版的Python已经不支持这个函数了,需要改成find_elements(by=By.CLASS_NAME, value=name)改成这种形式,这种方法要借助 By 来传入定位方式,需要先引入,主要是为了防止定位方式写错。
# 引入 from selenium.webdriver.common.by import By # 例子 driver.find_element_by_id(By.ID, "kw").send_keys("A")使用
find_element()
的好处是方法名不会写死,定位方式可以通过参数传递,在一些框架中使用时会更加灵活一些。以下是定位方式与 By 中的属性对应清单:
# 仅限超链接(没有id、没有name、class_name一样,通过之前的方法很难定位到) # 可以通过a标签之间的链接文本来定位 # link text driver.find_element(By.LINK_TEXT, "hao123").click() # partial linktext 当标签中的文本过长 driver.find_element(By.PARTIAL_LINK_TEXT, "hao").click()
注意:如果相同的规则对应多个标签,那么这些方法会返回第一个
遇到的问题:
2、问题描述:与问题1同理
原因与解决方法:问题1同理得
# 通过CSS选择器 driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("A")
更多:CSS选择器手册
# -xpath xml path 根据xml的路径进行定位 # xml x:可扩展的 m:标记 l:语言 # html h:超 t:文本 标记语言 (超出文本范畴) # 只能运用有限的几种标签,所以html是不可扩展的 # XML和HTML一样是标签语言,通过标签的嵌套来表达信息。 # xml自然而然形成了父节点、子节点、后代节点、相先节点、同胞节点等关系。 # 而xpath就是用来在这些节点中找到所需要的. driver.find_element(By.XPATH, "//*[@id='kw']").send_keys("A") driver.find_element(By.XPATH, "//*[@id='su'']").click()
获取xml路径:
3.问题描述:
在Chrome浏览器安装xpath helper插件结果一直提示“程序包无效”
解决方法:
1、将crx结尾的扩展包的后缀名更改为rar格式的压缩包文件,直接确认。
2、将压缩包进行解压缩,然后将路径下的_metadata改为metadata
3、进入Chrome浏览器的加载扩展程序界面,点击“加载已解压的扩展程序”,进入解压后的文件夹就可以直接安装了。
打开和关闭xpath helper的快捷键都是:ctrl + shift + x
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧