在编写webUI自动化过程中,有些元素的定位,不能直接通过id、name等快速定位到。这些特殊的元素定位就需要我们了解和学习解决方案,例如下拉框、radio/checkbox等。本文一起来了解一下,下拉列表框该定位。
一、查看被测应用元素信息
被测应用如图,禅道的添加用户页面,有一个部门的选项,是下拉列表框,这种类型的如何定位呢?
二、Select的下拉框怎么定位
F12打开控制,点击具体的元素,看到它的属性
select标签,name和id都是'dept' ,试试如下定位方法
-
s1= Select(driver.find_element(By.ID,'dept'))
-
s1.selec_by_index(1)
也可以封装成一个方法
-
def select_by_index(self, By, by_value, index):
-
"""
-
根据index进行选择
-
by 定位方式
-
by_value 定位值
-
index 下标
-
"""
-
select = self.driver.find_element(By, by_value)
-
depts = Select(select)
-
depts.select_by_index(index)
其中select_by_index是selenium自有方法源码,可直接调用,如下是源码信息
-
def select_by_index(self, index):
-
"""Select the option at the given index. This is done by examining the
-
"index" attribute of an element, and not merely by counting.
-
:Args:
-
- index - The option at this index will be selected
-
throws NoSuchElementException If there is no option with specified index in SELECT
-
"""
-
match = str(index)
-
for opt in self.options:
-
if opt.get_attribute("index") == match:
-
self._set_selected(opt)
-
return
-
raise NoSuchElementException(f"Could not locate element with index {index}")
其思路也是获取下拉的选项框,循环遍历寻找匹配的index,找到便设置成选中属性
-
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
-
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
-
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
-
分享他们的经验,还会分享很多直播讲座和技术沙龙
-
可以免费学习!划重点!开源的!!!
-
qq群号:455787643【暗号:csdn11】
三、非select的下拉框如何定位?
实际情况,有用input标签的下拉框功能,怎么定位呢?如下图
只能通过模拟人手动点的方式触发事件
非select的下拉框可以通过以下方式抓取元素:
- 使用click()方法模拟用户点击下拉框,展开下拉选项。
- 使用find_elements_by_xpath()方法定位所有下拉选项的元素并存储到一个列表中。
- 遍历下拉选项列表,找到目标选项,并使用click()方法点击它。
- 如果需要输入内容,可以获取下拉框的input元素进行操作。
示例代码
-
from selenium import webdriver
-
driver = webdriver.Chrome()
-
driver.get("https://www.baidu.com/")
-
# 定位下拉框并点击展开
-
dropdown = driver.find_element_by_xpath('//input[@name="wd"]')
-
dropdown.click()
-
# 定位下拉选项并点击目标选项
-
options = driver.find_elements_by_xpath('//ul[@class="sug"]/li')
-
for option in options:
-
if option.text == "Selenium":
-
option.click()
-
break
-
# 获取下拉框的input元素并输入内容(可选)
-
input_box = driver.find_element_by_xpath('//input[@name="wd"]')
-
input_box.send_keys("使用Selenium进行自动化测试")
其实也是仿写了上面selenium的select_by_index 思路循环遍历,只是先要通过click方法触发一下options的展示。
四、思考
我们在学习selenium UI自动化过程中,可以多去看源码,看看官方的解决思路是怎么样的,多看多实践,有些也可以为我所用。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。