选项是大多数页面经常使用到的控件。但是一般的定位方法现需要点击选项、然后等待元素加载出来之后,再点击元素。弹出的选项内容又会由于页面使用的控件类型不同导致定位不准确,报错
所以针对选项控件,能不能提炼出一个方法通吃?
答案是:肯定的。
设计思路:
鼠标点击下拉框后,键盘输入向下方向键,能够定位到第一个元素,点击回车能够选中该元素。
这样就能够解决选项内容还需要单独定位的问题。只需要判断选择的是第几个元素,就可以直接完成选项的操作。
使用到的类:
selenium的类不说了,主要需要使用到ActionChains【鼠标操作类】
使用场景:向方法传下拉选项xpath、选型所在的位置,然后就能够选中这个选项
源码:
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
def Choose_Element(driver,xpath,number=1): """ :param driver: 别处生成的driver :param xpath: 录入xpath :param number: 录入需要进行选择的次数,填写数字,例如:1,不填写默认选择第一个 :return: """ el = driver.find_element(By.XPATH,xpath) # 定位到下啦选项 ActionChains(driver).click(el).perform() # 对下啦选项进行点击操作 for i in range(number): # 创建一个for循环,循环次数默认按照number来 ActionChains(driver).send_keys(Keys.DOWN).perform() # 每读取一次,就点击一个向下按钮 ActionChains(cls.driver).send_keys(Keys.ENTER).perform() # 执行所有循环后,输入回车
调用方法举例:
Choose_Element(driver,"//*[@id='username']",1)
公共方法使用局限:
1. 选项需要能够与键盘进行操作,如果不支持键盘交互,就完蛋了。目前还没有发现
2. 选择第几个需要由写脚本人员定义好,而且定义的内容可能不确定到底选了什么,需要写好备注
希望这个方法能够对你的自动化编写起到一定的作用~