在做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

Selenium处理页面懒加载方法的更多相关文章

  1. Ionic3新特性--页面懒加载2加载其他组件

    在第一节中,我们介绍了页面的懒加载方式,并进行了初步的分析,这里,我们将进一步介绍如何配合页面懒加载进行其他组件Component.Pipe.Directive等的模块化,和加载使用. 首先说明一点, ...

  2. js不需要知道图片宽高的懒加载方法(经过实际测试,不加宽高仍然是无法正常加载的,设置height:auto,height:100%,仍然显示高度为0)

    js不需要知道图片宽高的懒加载方法 懒加载是如何实现的? - 简书https://www.jianshu.com/p/e86c61468285找到一个不需要知道图片宽高的懒加载方法了(经过实际测试,不 ...

  3. vue路由的异步加载(懒加载)方法

    vue路由的异步加载(懒加载)方法. javascriptvue.jsvue-router  阅读约 2 分钟 vue本身不多介绍.直接说问题,因为vue的所有路由都是加载在一个app.js里的,如果 ...

  4. Ionic3新特性--页面懒加载1

    Ionic3新的懒加载机制给我带来了如下新特性: 避免在每一个使用到某Page的Module或其他Page中重复的import这个类(需要写一堆路径) 允许我们通过字符串key在任何想使用的地方获取某 ...

  5. Java Web SpringMVC AJAX,实现页面懒加载数据

    因为做的微信端的网页,所以在显示后台数据的时候,要么分页,要么全部加载数据,开始分页对于用户来说,其实体验不是很好,毕竟要去不断的点击下一页,但是如果我把全部数据读取出来的话,但用户可能也就看前面几条 ...

  6. iOS开发UI篇-懒加载、重写setter方法赋值

    一.懒加载 1.懒加载定义 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再 ...

  7. vue实现懒加载的几种方法

    vue实现惰性加载是基于: 1.ES6的异步机制 components: { comp: (resolve, reject) => {} } 2. webpack的代码分割功能 require. ...

  8. ionic3 懒加载在微信上缓存的问题

    1.懒加载是什么? 在ionic2中所有的组件.模块.服务.管道等都堆积在app.module.ts模块中,在页面初始化的时候会一次性加载所有的资源,导致资源过大,页面渲染缓慢,也导致app.modu ...

  9. [jQuery插件]手写一个图片懒加载实现

    教你做图片懒加载插件 那一年 那一年,我还年轻 刚接手一个ASP.NET MVC 的 web 项目, (C#/jQuery/Bootstrap) 并没有做 web 的经验,没有预留学习时间, (作为项 ...

随机推荐

  1. VBA输入框(InputBox)(六)

    InputBox函数提示用户输入值.当输入值后,如果用户单击确定 按钮或按下键盘上的ENTER 键,InputBox函数将返回文本框中的文本.如果用户单击“取消” 按钮,该函数将返回一个空字符串(&q ...

  2. 字体图标iconfont

    字体图标的作用: 1. 可以做出图片一样可以做的事情, 改变透明度, 旋转度,等... 2. 但是本质其实是文字,可以很随意的改变颜色, 产生阴影,透明效果等 3. 本身体积更小,但携带的信息并没有消 ...

  3. redis集群1

    redis-trib.rb命令详解   redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准 ...

  4. 关闭mysql严格模式

    配置文件my.ini sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改为 s ...

  5. 【2017-07-03】CSS实现父级div透明,子集不透明。

    父级背景色 background: rgba(0, 0, 0, 0.5);

  6. C#中设置密码框 ,用符号代替密码

    添加控件 添加控件 确认键代码 private void button1_Click(object sender, EventArgs e) { //修改密码.新密码,重复新密码,两次输入的新密码必须 ...

  7. SQL server 语句执行分析

  8. mongodb的基本操作之数据写入和查询

    连接到mongodb服务器后,查看当前数据中有多少数据库 show dbs   切换数据库 use conf     删除数据库 db.dropDatabase() 再次使用 use conf 切换数 ...

  9. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP)

    2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP) 链接:https://ac.nowcoder.com/acm/contest/163/ ...

  10. python中使用uwsgi启动wsgi应用

    uwsgi --http :8000 --wsgi-file wxhttpapi2.py --callable application --processes 4 --threads 2