Web自动化测试中选择Div下拉列表
前言
最近在做公司的一个产品的前端自动化工作,所用到的框架是Python+Selenium(ps:感觉自己应该抽空的时候去学一学Java,看到网站上招聘信息对于自动化测试这块还语言要求基本上都是Java或者Python,反正技多不压身~)
相关资料
我采用的是PageObject设计模式,这种设计模式的特点就是对一个网页的界面元素进行封装。元素包括界面按钮,下拉框,输入框,树等(界面能点击输入的元素),封装的方法有点击事件,输入事件。定位元素方法和操作元素方法分离开,元素定位全部放一起,每一个操作元素动作写成一个方法,具体文章在https://blog.csdn.net/caoliu1024cl/article/details/77622492 中 4.12 PageObject设计模式章节中有详细说明。
本次主要是遇到了下拉列表选择问题
大部分selenium 对下拉列表的操作基本上都是使用Select 对象,可是该对象只能识别网页中的select标签,不能对Div的标签进行操作。
就比如上面我项目中遇到的情况,该下拉列表并没有select 属性,因此我选择用模拟键盘“上”,“下”键进行封装。
使用到的库与方法
// An highlighted block
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
Keys为键盘对应字符表
ActionChains 类提供对鼠标,键盘的操作方法
使用到的方法
perform() ——执行链中的所有动作
release(on_element=None) ——在某个元素位置松开鼠标左键
send_keys(*keys_to_send) ——发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素
附上代码
// An highlighted block
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
def select_by_index(self,locator,index = 1):
'''通过index选择下拉框'''
_element = self.find_element(locator)
#先点击元素
self.click(locator = locator)
#通过快捷键发送元素
for _i in range(index):
ActionChains(self.webdriver).send_keys(Keys.DOWN).perform()
ActionChains(self.webdriver).send_keys(Keys.ENTER).perform()
这里应该也可以使用send_keys_to_element 方法, 以后有时间在来调试一下~