zoukankan      html  css  js  c++  java
  • Web UI自动化测试-滚动条操作

    """
    大多数网页,页面内容超多自动出现了滚动条,通过代码找到元素后即可操作 因为它会自动滚动到元素可见位置。
    有些不会自动滚动的页面 就需要用代码操作滚动条
    滚动的目的:将你要操作的元素,滚动到可视区域后,再操作。
    滚动不是滚动的右侧滚动条,而是把元素滚动到可视区域 滚的是元素。
    前端开发中 动态效果是由js实现的,所以这个滚动的动作也是js实现的
    python中执行js语句用函数execute_script()
    很多的网页,是会自己滚的。如何检测:直接不滚动去操作滚动条最下方数据 看能否操作 能就是自动滚的 试下淘宝 京东
    """
    #示例百度首页搜索“柠檬班”,搜索结果中点击一个页面要翻页才能看到的链接元素
    from selenium.webdriver.common.keys import Keys

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    import time

    driver = webdriver.Chrome()
    # driver.maximize_window()

    driver.get("http://www.baidu.com")

    driver.find_element_by_id("kw").send_keys("柠檬班",Keys.ENTER)

    # 等待搜索结果出现
    loc = (By.XPATH,'//a[contains(text(), "知乎")]')
    WebDriverWait(driver,10).until(EC.visibility_of_element_located(loc))
    # 找到要滚动的元素
    ele = driver.find_element(*loc)

    # 先滚动到可视区域后,
    #操作滚动条要用java script(js)语句,python中执行js的函数为execute_script()
    # def execute_script(self, script, *args): 参数1:javascript脚本 参数2-n:传给js脚本的参数
    #element.scrollIntoView(); #js中用来将某元素滚动到可见区域的语句,注意要引号 分号
    # js脚本当中,用什么来接收外部的参数?arguments 是个列表。
    # js脚本当中,什么函数来滚动页面呢?scrollIntoView()
    # scrollIntoView() 元素与页面顶部对齐 如果顶部有个遮罩层 就可能看不到。scrollIntoView(false) 与页面底部对齐
    driver.execute_script("arguments[0].scrollIntoView(false);", ele)#滚动到元素出现在页面底部 常用固定用法 记!
    # driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

    time.sleep(2)
    # 再去点击
    ele.click()

    """
    直接滚动到页面底部 (常用于要用翻页控件):
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    直接滚动到页面顶部:
    driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")

    """
  • 相关阅读:
    linux创建用户
    使用Myeclipse插件将wsdl生成java客户端代码
    JAVA时间格式转换大全
    数据库DDL语句书写规范
    jacon
    应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)
    为什么使用内部类
    HBase查找一条数据的过程
    Hadoop:输入,输出,key,value格式
    ArrayList和Vector的区别
  • 原文地址:https://www.cnblogs.com/shuchang1001/p/13365304.html
Copyright © 2011-2022 走看看