Selenium学习之元素定位

 
最近在学习Selenium的自动化测试,最基础的学习就是元素定位了,鉴于定位方法较多,我又是个初学者,所以边学边记录一下。感谢白月黑羽提供的学习视频,又想要学习的去B站上搜索,对于入门者来说真的很棒,再次感谢!

(一)元素定位方法

如上图所示,有八种元素定位方法,要注意的是,用id获取的元素肯定是唯一的,而用其他的方法可能会找到多个元素,但只会返回第一个。所以其他七种定位方法有对应的find_elements_by_X的方法,用find_elements_by_X会返回元素集合。

使用css选择器和xpath来定位元素,对于初学者来说可能会有些复杂。因为对css选择器和xpath不熟的话,我们不知道在方法中该输入什么内容。

有个简单的解决方法,我们可以将鼠标移到对应元素的HTML代码上方,“右键——>Copy——>Copy selector”来获取css 选择器,同理“右键——>Copy——>Copy xpath”来获取xpath。例如:find_element_by_css_selector('#su') 和 find_element_by_xpath('//*[@id="su"]'),这是分别通过css选择器和xpath的方式去获取百度首页的百度一下按钮这个元素。

  • css选择器定位元素时,默认id用“#”号,class用英文句号“.” ,父元素和子元素之间用“>”连接,祖宗元素和后代元素之间用空格连接,如果需要获取多个不同属性的元素,则用英文逗号“,”相隔。
  • xpath则是用 [@属性名=''属性值"]的方式,即[@id="id值"],[@class=“class值”]等等,但必须注意的是,xpath中用到的class值必须是完整的,而css选择器只需要取其中一个。

举个例子,示例代码如下:

<html>
    <body>
        <!--省略一长串代码-->
        <div id="A">
            <h1 class="aaa a-btn">点吧</h1>
            <p>健康</p>
            <p>平安</p>
            <p>快乐</p>
        </div>
    </body>
</html>

(1)如果想取到a1这个元素,可以用以下几种方式:

# 取元素h1
#在css选择器查找元素时,“#”代表通过id获取元素,“>” 代表父子元素的关系,空格 代表祖宗元素跟后代元素的关系
#css选择器的“>”相当于xpath的“/”,同理 空格 相当于 “//”
find_element_by_css_selector("html>body #A>h1")
find_element_by_xpath('/html/body//*[@id="A"]/h1')

#上面的也可以简写
find_element_by_css_selector("#A>h1")
find_element_by_xpath('//*[@id="A"]/h1')

# 在css选择其查找元素时,“.”代表通过class值获取元素,且只能取一个class值(指空格分开的多个class值的其中一个),而xpath要取完整的class值
find_element_by_css_selector('#A>.aaa') 或 find_element_by_css_selector('#A>.a-btn')
find_element_by_xpath('//*[@id="A"]/h1[@class="aaa a-btn"]')

要注意的是:上面的代码中有比较多的用到星号“*”,这其实是一个通配符,表示无所谓元素的tag名称是什么。当然我们也可以用正确的tag名称去代替它,是一样的定位效果。

(2)如果想取多个元素,例如“a1”和所有的“p”元素,可以用下面的方式:

#取全部a1和p元素
#css选择器的“,”相当于xpath的“|”
find_element_by_css_selector("#A>a1 , #A>p")
find_element_by_xpath("/A/a1 | /A/p")

(二)实操(白月黑羽的测试用例,文档下载:https://github.com/jcyrss/baiyueheiyu/files/3986495/tcs-selenium.xlsx

1、不完整或错误的账号密码登录:

from selenium import webdriver

# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Chrome(r'D:\ChromeDrive
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
欢迎使用本系统。以下是使用说明文件。 V3.1 20100624 新版本说明 本系统是白月工作室“中小企业互联网信息化系统”的一部分 —— 企业 内部管理系统,包括订单管理、客户管理、产品管理(与网站系统配合) ,详细了解,请浏览我们的网站! 本系统增加与管理系统对接的相关参数设置!!! 网站:http://www.by028.com http://www.by111.com 1、本系统采用PHP+MYSQL构件,适用于安装有PHP平台的任何服务器。 2、请将在"数据库文件",中最近的数据库文件导入数据库(数据库 为.txt文档或者.sql文档)。 3、在INC/CONFIG.INC.PHP中修改数据库连接字段,以及其他需要修改的 字段。 4、直接浏览admin.php可以进入后台 5、不能从以前的版本升级! 用户名:admin 密码:123456 白月工作室的中小企业互联网信息化系统 信息化是企业的一个痛,高昂的投入、长期的回报周期,让很多的企业望 而却步,尤其是中小企业。白月工作室针对这个特点,将信息化系统中一 些中小企业的软件体系进行筛选,仅保留了“生产管理”、“订单管理” “客户关系管理”“网站系统”这些功能的系统,组成一个微小化的信息 化体系,来解决目前中小企业迫切需要解决的 产品-> 客户 -> 商机这 个流程体系上来。以系统为数据中心,以网站为媒介,完美增强企业的客 户服务,并且紧抓内部产品和订单的管理,使其共同促进企业的发展。 而其他的一些企业的OA系统、财务系统这些本体系不会涉及到。 您的企业只需要一个网站就够了吗? 白月中小企业信息化解决方案是针对目前中小企业落后的互联网信息化技 术方面的一个有效补充,虽然整个体系可能不会像大型信息化系统一样涵 盖全面,但是在投入和收效上却可以达到一个很好的平衡!可以让企业在 花费很小的情况下,实现基本的订单流程、客户关系流程、企业内部管理 流程! 本系列软件体系适合任何想在互联网安家的中小企业! 选择白月中小企业信息化系统的理由! 1、本系统适合网上接单的威克、建站公司,我们可以帮助绑定网站后台 程序,或者购买源代码自行修改升级变成自己的版本。 2、一个界面漂亮而又有功能的网站,在企业面前吸引力肯定大于一个只 是界面漂亮的网站。 3、本体系包含三个模块,既可独立使用,又可以根据企业的投入多寡进 行结合使用,非常的实用。 4、白月工作室的全程服务(包含部分升级、BUG报告服务)! 三个大软件模块 下面将简单介绍下功能体系: 企业内部订单、客户管理系统: 1、客户(代理商)管理,可增加、编辑、删除相关客户(代理商),设 置代理级别,指定为其服务的客户经理(见功能5)。 2、产品资料管理,管理产品相关资料,图片(可多图)。在系统中的产 品资料,与“网站系统”结合,并将在“网站系统”的“产品中心”中展 示出来 3、产品库存管理,产品基本的库存管理,是一个微小型的进销存系统。 4、产品生产管理,产品生产流程监控,与库存管理配合使用。 5、客户经理管理,可设置相关客户经理,并指定其为某客户服务。具有 客户经理成效管理功能,跟进客户状态和客户资源、销售都与其挂钩,由 管理者统一管理。 6、订单管理,订单的增加、编辑、删除,并且与“客户经理管理”配合 ,由各个客户经理增加、审核订单(并且记录如成效管理系统)。客户也 可以在“客户关系系统”中提交订单! 7、订单流程管理,订单的每个流程都进行记录,“客户关系系统”中, 客户可以看到订单流程。 8、客户消息与反馈管理,客户可以通过,“客户关系系统”反馈信息给 企业,这里是管理这些反馈的地方,并且也可以给客户发短消息。 9、报表管理,各类周、月、年度报表,包括客户经理报表,客户报表, 总报表等 客户关系系统: 1、布置方便,该模块可以不依赖白月工作室网站管理系统直接设置,也 可以与网站放置在一起。 2、产品信息管理,可以浏览产品详细信息、搜索相关产品。可以增加至 订单。 3、订单管理,订单的提交、增加商品、取消等 4、报表管理,日、周、月、年度报表 5、消息反馈管理,与企业进行在线信息交流。 6、简单进销存(可选),为客户建立一套进销存系统,可以在线管理自 己的销售。并且当某产品库存少时,企业内部管理系统,将有提示,也为 企业的营销提供相关的数据支持! 网站系统 1、布置方便,该模块可以不选择。 2、产品中心,如果不选择“白月工作室网站管理系统”,产品中心功能 将失效。产品中心并且不能单独布置。 3、新闻中心,白月工作室企业网站管理系统,已经包括企业建站所需要 的“企业简介、新闻中心、单独的文章项目”
引用\[1\]:Selenium通过在页面上寻找元素位置,找到元素后,然后对元素进行相应的操作,Selenium寻找元素位置的方法,称之为定位。常用的定位方法有8种,分别是:find_element_by_id、find_element_by_name、find_element_by_xpath、find_element_by_link_text、find_element_by_partial_link_text、find_element_by_tag_name、find_element_by_class_name、find_element_by_css_selector。\[1\]\[2\]\[3\] 问题: Selenium元素定位有哪些方法? 回答: Selenium元素定位有8种方法,分别是:find_element_by_id、find_element_by_name、find_element_by_xpath、find_element_by_link_text、find_element_by_partial_link_text、find_element_by_tag_name、find_element_by_class_name、find_element_by_css_selector。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [java+ selenium自动化测试-元素定位大法之By id(详细教程)](https://blog.csdn.net/weixin_50829653/article/details/118887378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [[python爬虫] Selenium常见元素定位方法和操作的学习介绍](https://blog.csdn.net/Eastmount/article/details/48108259)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值