zoukankan      html  css  js  c++  java
  • 12、js处理web页面滚动条

    应用场景:当页面上的元素超过一屏后,待操作的元素在页面可视区域外时,是不能直接定位到,会报元素不可见错误:is not clickable at point!!

    解决办法:要将待操作的元素滚动到可视区域当中,这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。

    滚动条是无法直接用定位工具来定位的,selenium 里面也没有直接的方法去控制滚动条,但 selenium 提供了一个操作 js 的方法:execute_script(),可以直接执行 js 的脚本

    1.先找要将要操作的元素
    element = driver.find_element_by_xxxx("XXXX")

    2.再将元素滑动到可视区域:通过执行javaScript语句实现
    driver.execute_script("arguments[0].scrollIntoView();",element)

    3.再操作元素
    element.XXX()

     

    以下是移动的四种方式

    1.移动到元素element对象的“底端”与当前窗口的“底部”对齐

    driver.execute_script("arguments[0].scrollIntoView(false);",element)

    2.移动到元素element对象的“顶端”与当前窗口的“顶部”对齐

    driver.execute_script("arguments[0].scrollIntoView();",element)

    3.移动到页面底部

    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

    4.移动到页面顶部

    driver.execute_script("window.scrollTo(0,document.body.scrollHeight,0)")

    针对Chrome浏览器用下面

    driver.execute_script("window.scrollTo(0,document.body.scrollTop,0)") 

     

     

     

     

     

     

     




    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    driver=webdriver.Chrome()
    
    driver.get("https://www.baidu.com/")
    driver.maximize_window()
    driver.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
    time.sleep(5)
    #第一步:先定位到元素:如果有时候找不到元素有时候能找到,说明是有时候元素没有加载出来,在上一步操作之后加一个时间等待页面加载完成
    ele =driver.find_element_by_xpath('//a[@class="n"]') #定位页面底部的“下一页”
    ele1=driver.find_element_by_link_text("资讯")          #定位页面顶部的“资讯”
    # #第二步:将元素移动到可视区域
    driver.execute_script("arguments[0].scrollIntoView();",ele)
    time.sleep(3)
    driver.execute_script("arguments[0].scrollIntoView(false);",ele1)  #
    # 第三步,操作元素
    ele1.click()
    time.sleep(3)
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)") #移动到页面底部
    time.sleep(3)
    driver.execute_script("window.scrollTo(0,document.body.scrollTop,0)") #移动到页面顶部
  • 相关阅读:
    如何在eclipse开发环境中连接数据库?oracle和db2
    oracle数据库表的记录误删后如何恢复
    人事经理眼中的好简历
    JavaScript常用方法
    如何解决plsql被用户锁定的问题?
    eclipse 快捷键
    刚开始用9.3的版本,一堆问题。(转)
    十条不错的编程观点(转)
    http://localhost:8099无法登录,出现incorrect info报错信息,怎么办?
    http://localhost:8399/arcgis/rest/services 无法访问,怎么办?
  • 原文地址:https://www.cnblogs.com/yhms/p/10775211.html
Copyright © 2011-2022 走看看