zoukankan      html  css  js  c++  java
  • selenium控制滚动条滚动

    UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等;但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了。

    在python中有几种方法解决这种问题

    一、使用js脚本直接操作

    js="var q=document.getElementById('id').scrollTop=10000"

    driver.execute_script(js)

    或:

    js="var q=document.documentElement.scrollTop=10000"

    driver.execute_script(js)

    这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用

    二、使用js脚本将滚动条拖动到指定元素地方

    accounting_unit_element = self.brower.find_element_by_xpath('//span[text()="考核单元"]')

    self.brower.execute_script('arguments[0].scrollIntoView();',accounting_unit_element)

    这种方式,会将accounting_unit_element元素显示到当前frame的顶部位置

    三、发送PAGE_DOWN、END等键盘事件

    END:可以让页面直接下拉到底

    HOME:上拉到顶端

    PAGE_DOWN:小幅度下拉

    PAGE_UP:小幅度上拉

    accounting_unit_element = self.brower.find_element_by_xpath('//span[text()="考核单元"]')

    action=ActionChains(self.brower)

    action.send_keys(Keys.PAGE_DOWN).perform()

    四、滚动条滚动方法

    #下拉到页面底部

    driver.executeScript('window.scrollTo(0,document.body.scrollHeight);')

    #上拉到页面顶端

    driver.executeScript('window.scrollTo(document.body.scrollHeight,0);')

    #下拉到页面1000位置

    driver.executeScript('window.scrollTo(0,1000);')

    #上拉到页面顶端 0,0位置

    driver.executeScript('window.scrollTo(0,0)';)

    #滚动到距离当前位置的0,100位置(向下滚动)

    driver.executeScript('window.scrollBy(0,100)';)

  • 相关阅读:
    [数据结构]图的DFS和BFS的两种实现方式
    [算法]两个栈实现一个队列
    [数据结构]手动实现队列
    [数据结构]手动实现栈
    [数据结构]手动实现单链表
    Hive分组取Top K数据
    HBase解决海量图片存储方案
    非结构化数据存储方案
    头条面试题之实现两个线程轮流打印字符串
    [算法]最大连续子数组和,最长重复子串,最长无重复字符子串
  • 原文地址:https://www.cnblogs.com/sky-cheng/p/14547944.html
Copyright © 2011-2022 走看看