webdriver-元素定位

本文介绍了WebDriver进行元素定位的重要性,详细讲解了包括id、name、class_name等在内的多种定位方法,并阐述了find_element[s]_by_XXX()的作用。同时,深入探讨了Xpath和CSS定位策略,包括绝对路径、相对路径、属性定位以及CSS的选择器,如id选择器、class选择器和元素选择器等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要学习元素定位方式?

1、让程序操作指定操作,就必须先找到此元素

2、程序不像人类用眼睛直接定位到元素

3、webdriver提供了八种定位元素方式

二、webdriver元素定位方式

1、id:id属性

2、name:name属性

3、class_name:class属性

4、tag_name:tag标签

5、link_text:超链接文本

6、partial_link_text:link_text模糊匹配

7、Xpath

8、Css

三、定位方法

id:find_element_by_id()

name:find_element_by_name()

class_name:find_element_by_class_name()

tag_name:find_element_by_tag_name()

link_text:find_element_by_link_text()

partial_link_text:find_element_by_partial_link_text()

四、定位实现步骤

1、导selenium包:from selenium import webdriver

2、导入time包:from time import sleep 

3、实例化浏览器(以火狐为例):driver = webdriver.FireFox()

4、打开页面:driver.get(url)

5、调用定位方法(以id定位为例):element = driver.find_element_by_id("id属性值")

6、使用sends_keys()方式发送数据:element.send_keys("填入的内容")

7、暂停3秒:sleep(3)

8、关闭浏览器:driver.quit()

注意:url中\需要转义

五、find_element[s]_by_XXX()

作用:

(1)查找定位所有符合条件的元素

(2)返回的定位元素格式为数组(列表)格式

(3)列表数据格式的读取需要制定下标(下标从0开始)

例:使用tag_name获取第二个元素(密码框)

driver.find_elements_by_tag_name("input")[1].send_keys("123456")

六、Xpath、CSS

1、为什么学习Xpath、CSS定位

(1)在实际项目中标签没有id、name、class属性

(2)id、name、class属性值为动态获取,随着刷新或加载而变化

2、什么是Xpath

(1)XPath即为XML Path的简称,它是一种用来确定XML文档中某部分位置的语言

(2)HTML可以看做事XML的一种实现,所以selenium用户可以使用这种强大的语言在Web应用中定位元素。

XML:一种标记语言,用于数据到的存储和传递,后缀,xml结尾

3、XPath定位策略(方式)

(1)路径-定位

         绝对路径:从外层元素到指定元素之间所有经过元素层级路径;

                           绝对路径以/开始      使用Firebug可以快速生成,元素XPath绝对路径

         相对路径:从第一个符合条件元素开始(一般配合属性来区分)

                           相对路径以//开始

(2)利用元素属性-定位

(3)层级与属性结合-定位

(4)属性与逻辑结合-定位

(1)路径(绝对路径、相对路径)

4、Xpath延伸

//*[text()="xxx"]                               文本内容是xxx的元素

//*[starts-with(@attribute,'xxx')]      属性以xxx开头的元素

//*[contains(@attribute,'xxx')]         属性中含有xxx的元素

5、什么是css

(1)css是一种语言,用来描述HTML和XML的元素显示样式

6、css定位常用策略

(1)id选择器   

         说明:根据元素id属性来选择 

         格式:#id         如:#userA(选择id属性值为userA的所有元素) 

(2)class选择器   

         说明:根据元素class属性来选择

         格式:.class         如:.tel(选择class属性值为telA的所有元素)

(3)元素选择器     

         说明:根据元素的标签名选择

         格式:element         如:input  (选择所有input元素)

(4)属性选择器       

         说明:根据元素的属性名和值来选择

         格式:[attribute = value]         如[type = "password"](选择所有属性值为password的值)

(5)层级选择器

         说明:根据元素的父子关系来选择

         格式:element>element          如:p>input(返回所有p元素下所有的input元素)

提示:>可以用空格代替 如:p input 或者 p[type = 'password']

7、CSS延伸

(1)input[type^='p'] 说明:type属性以p字母开头的元素

(2)input[type$='d']说明:type属性以d字母结束的元素

(3)input[type*='w']说明:type属性包含w字母的元素

 

 

 

 

### Webdriver Helper 使用指南 `webdriver-helper` 是一个 Python 的第三方库,旨在简化 Selenium 浏览器自动化的操作流程[^2]。以下是有关 `webdriver-helper` 的基本使用方法以及一些常见示例。 #### 安装方式 要安装该库,可以运行以下命令来通过 pip 进行安装: ```bash pip install webdriver-helper ``` 如果遇到安装失败或者导入错误的情况,可能是因为环境配置不正确或者是版本兼容性问题[^3]。建议检查当前使用的 Python 和 Selenium 版本是否满足依赖条件。 --- #### 基础功能介绍 `webdriver-helper` 提供了一些实用的功能,比如更方便地启动 WebDriver、管理浏览器窗口大小等。它还封装了许多常用的 Selenium 方法,使得脚本编写更为简洁高效。 ##### 示例代码:初始化并打开网页 下面是一个简单的例子,展示如何利用 `webdriver-helper` 启动 Chrome 并访问指定 URL: ```python from webdriver_helper import get_webdriver, wait_for_element # 初始化 WebDriver 实例,默认会尝试加载本地已有的驱动程序 browser = get_webdriver(browser_name="chrome") # 支持 chrome/firefox 等多种浏览器选项 try: # 打开目标网站 browser.get("https://www.example.com") # 显式等待某个元素出现后再继续执行后续逻辑 element = wait_for_element(browser, "#example-element", timeout=10) if element.is_displayed(): print("Element is visible!") finally: # 关闭浏览器实例 browser.quit() ``` 上述代码片段展示了以下几个核心函数的作用: - **get_webdriver**: 自动检测系统中的可用驱动文件,并返回对应的 WebDriver 对象。 - **wait_for_element**: 配合显式等待机制,用于定位页面上的特定 HTML 节点。 --- #### 解决 ImportError 错误 当发生类似于 `"cannot import name 'get_webdriver'"` 的报错时,通常表明模块未成功加载或存在路径冲突等问题。解决办法如下: 1. 卸载现有包重新安装; ```bash pip uninstall webdriver-helper && pip install webdriver-helper ``` 2. 如果仍然无法解决问题,则考虑升级 pip 工具本身以获取最新支持; ```bash pip install --upgrade pip setuptools wheel ``` 另外需要注意的是,在某些特殊场景下(例如虚拟环境中),还需确认所调用的解释器确实关联到了正确的库位置。 --- ### 注意事项 尽管此工具极大地方便了开发者快速搭建测试框架,但在实际项目应用前仍需仔细阅读官方文档了解其局限性和最佳实践。此外由于它是基于 Selenium 构建而成,因此熟悉后者的基础概念同样重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值