Selenium学习之元素定位

本文介绍了Selenium的八种元素定位方法,强调用id定位的唯一性,以及如何使用css选择器和xpath。提供了从HTML代码复制css选择器和xpath的技巧,并通过实例代码展示了如何定位和选取多个元素。此外,还分享了基于白月黑羽测试用例的实操场景,包括登录验证、菜单操作、客户和药品管理等。
摘要由CSDN通过智能技术生成
 
最近在学习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:\ChromeDriver\chromedriver.exe')

# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('http://127.0.0.1/mgr/sign.html')

#UI-0001 测试步骤:1、不输入管理员账号,输入密码 88888888;2、登录    预期结果:提示“请输
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值