当有多组元素,并且可能因为系统有残留数据,造成定位的改变。(一般为部门、资产等的新建,元素定位,在有数据和没有数据时,发生改变。)
背景:
当没有部门时,/td[@colspan='3']/table/tbody/tr/td[4]/span可以查找出两个元素,第二个为查找元素,当已存在一个部门时,该元素定位发生变化,可以查找到四个该元素,
解决思路:
获取存在该元素的列表长度,当大于3时,即代表至少存在一个部门。使用以下定位
self.driver.find_elements_by_xpath("//td[@colspan='3']/table/tbody/tr/td[4]/span")[2].click() # 点击部门列表
当小于3时,使用以下定位
self.driver.find_elements_by_xpath("//td[@colspan='3']/table/tbody/tr/td[4]/span")[1].click()#选择
def add_help(self):
"""
因为系统如果原来有数据,造成定位不准,此函数通过查找元素个数,判定部门个数。大于3,则有部门,否则没有部门
:return:
"""
ls=self.driver.find_elements_by_xpath("//td[@colspan='3']/table/tbody/tr/td[4]/span")#获取存在该元素的列表,
if len(ls)>3:
self.driver.find_elements_by_xpath("//td[@colspan='3']/table/tbody/tr/td[4]/span")[2].click() # 点击部门列表
else:
self.driver.find_elements_by_xpath("//td[@colspan='3']/table/tbody/tr/td[4]/span")[1].click()#选择第二个,