您的位置:首页 > 其它

selenium上滑动鼠标,浏览器接口不清零坐标参数

2017-09-13 10:25 417 查看
ActionChains(driver).drag_and_drop_by_offset().perform().release() 
使用上面的方法移动下面的控件时候就会滑动距离会递增,由于浏览器接口没有清零坐标,导致第二次再滑动时,是在原来的坐标上再次移动多了第一次滑动的距离,假如第一次滑动X1,第二次滑动X2,实际上第二次滑动的距离为X1+X2,第三次滑动的距离为X1+X1+X2+X3。查看webdriver的代码没这方面的方法。后来用一个递归的函数来滑动到想要的元素。调用底层的接口函数Command.XXX。

具体代码如下:

def
move(self,driver,beginElementId,endElementText,height,selectElementText):


beginElement=driver.find_element_by_xpath(beginElementId)




if(beginElement.text.find(endElementText)==0):


return
True


else:


#beginElement=driver.find_element_by_xpath('//div[@class="'+str(beginElementId)+'"]/div/div[@class="picker-item
picker-selected"]')


moveDic={'xoffset':0,'yoffset':0}


driver.execute(Command.MOVE_TO,{'element':
beginElement.id})


driver.execute(Command.MOUSE_DOWN,{})


moveDic['yoffset']=-int(2*height-int(height/2))


driver.execute(Command.MOVE_TO,moveDic)


time.sleep(0.5)


driver.execute(Command.MOUSE_UP,{})


driver.find_element_by_xpath('//div[@class="mint-popup
mint-popup mint-popup-bottom"]/div/span[contains(text(),"完成")]').click()


time.sleep(1)


driver.find_element_by_xpath('//input[@placeholder="'+str(selectElementText)+'"]').click()


time.sleep(0.5)


self.move(driver,
beginElementId, endElementText, height,
selectElementText)

页面元素的截图如下: 



调用:

self.move(driver,
'//div[@class="mint-popup mint-popup mint-popup-bottom"]/div['+str(i)+']/div/div/div[@class="picker-slot picker-slot-center slot3"]/div/div[@class="picker-item picker-selected"]', endElementText=abodeCity,height=height,selectElementText='请选择所在城市')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: