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
  • 相关阅读:
    按需导入NavMenu无法使用情况解决办法
    如果要使用另一台电脑作为服务器,注意关掉防火墙
    mongoose学习
    koa2的学习
    vue中swiper的使用
    447. Number of Boomerangs
    33. Search in Rotated Sorted Array
    461. Hamming Distance
    392. Is Subsequence
    412. Fizz Buzz
  • 原文地址:https://www.cnblogs.com/SmilingEye/p/11353532.html
Copyright © 2011-2022 走看看