python+selenium下拉列表,滚动条操作失效时,用键盘向下键代替

我们项目的页面有一个下拉列表,但不是select类型,无法通过封装称Select来操作。看了很多文章都写通过js代码driver.execute_script("window.scrollTo(0,10000)")可以实现滚动,但我怎么试都不行,就选择换一种思路,通过键盘向下键来代替鼠标滚动

我们项目的下拉列表是ul类型,列表中的值是li类型

在页面上点击这个标注文字时在下方出现下拉框,我先用截图工具截取图中红线区域,计算从该按钮中心移动到右侧下拉滚动条的像素距离,然后用move_to_element_with_offset方法将鼠标移动到进度条上,单击进度条后,再用键盘事件send_keys(Keys.DOWN)的向下键即可实现下拉列表向下滚动

 

 代码参考

from selenium.webdriver import Keys
from selenium.webdriver.common.action_chains import ActionChains

def scroll_down(self,element):
    #页面定位到标注按钮
    tagging_button = self.find_element_by_xpath(element)
    #178,100就是上图中红线框的长和宽,将鼠标从标注按钮移到进度条
    self.move_to_element_with_offset(tagging_button, 178, 100)  
    actions = ActionChains(driver)
    #点击进度条
    actions.click()
    i = 0
    while i < 8:
        #键盘向下一次
        actions.send_keys(Keys.DOWN).perform()
        i = i + 1
    time.sleep(1)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值