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

ActionChains(driver).drag_and_drop_by_offset().perform().release() 

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

具体代码如下:

  1. def move(self,driver,beginElementId,endElementText,height,selectElementText):
  2. beginElement=driver.find_element_by_xpath(beginElementId)
  3. if(beginElement.text.find(endElementText)==0):
  4. return True
  5. else:
  6. #beginElement=driver.find_element_by_xpath('//div[@class="'+str(beginElementId)+'"]/div/div[@class="picker-item picker-selected"]')
  7. moveDic={'xoffset':0,'yoffset':0}
  8. driver.execute(Command.MOVE_TO,{'element': beginElement.id})
  9. driver.execute(Command.MOUSE_DOWN,{})
  10. moveDic['yoffset']=-int(2*height-int(height/2))
  11. driver.execute(Command.MOVE_TO,moveDic)
  12. time.sleep(0.5)
  13. driver.execute(Command.MOUSE_UP,{})
  14. driver.find_element_by_xpath('//div[@class="mint-popup mint-popup mint-popup-bottom"]/div/span[contains(text(),"完成")]').click()
  15. time.sleep(1)
  16. driver.find_element_by_xpath('//input[@placeholder="'+str(selectElementText)+'"]').click()
  17. time.sleep(0.5)
  18. self.move(driver, beginElementId, endElementText, height, selectElementText)
页面元素的截图如下: 

title

调用:

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='请选择所在城市')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值