zoukankan      html  css  js  c++  java
  • Selenium处理页面懒加载方法

    在做selenium webdriver  在做UI自动化时,有些页面时使用懒加载的形式显示页面图片,如果在不向下移动滚动条时,获取到的图片会是网站的默认图片和真实的图片不相符。

    1.滑动滚动条

    1.1如果滚动条是针对整个HTML可以用如下方式:

    js = "var q=document.documentElement.scrollTop=10000"  # documentElement表示获取根节点元素
    self.driver.execute_script(js)

    1.2如果滚动条是针对整个body可以用如下方式:

    js = "var q=document.body.scrollTop=10000"  # documentElement表示获取body节点元素
    self.driver.execute_script(js)

    1.3如果滚动条是针对某个div可以用如下方式:该页面的滚动条就是针对class='main'的div而言的

    js = "var q=document.getElementsByClassName('main')[0].scrollTop = 10000"  # getElementsByClassName表示获取class='main'的元素列表,0表示第一个,所以使用的时候要加索引
    self.driver.execute_script(js)

    当元素在中间时不太方便

    2.按下键方式(没有测试过,建议使用3)

    driver.find_element_by_xpath("//*[@id='wrapper_wrapper']").send_keys(Keys.DOWN)

    3.定位到元素处

    ActionChains(driver).move_to_element(listbox).perform()

    建议使用3方便快捷 ,一般与页面显示等待结合使用,下面为代码例子

    from selenium import webdriver
    from selenium import common
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.action_chains import ActionChains
    driver = webdriver.Chrome()

    driver.get(url)
    # 页面分段加载,鼠标悬浮在某元素上
    listbox = driver.find_element(By.XPATH, "//div[@role='listbox']")
    ActionChains(driver).move_to_element(listbox).perform()
    element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//div[@role='listbox']//figure//img"))
    )
    html = driver.page_source
  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/SmilingEye/p/11353532.html
Copyright © 2011-2022 走看看