UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等;但有一种是在当前显示的页面元素不可见,拖动下拉条后元素就出来了。

比如下面这样一个网页,需要进行拖动下拉条后才能通过selenium找到密码输入框的元素,

2019071414283225.png

2019071414283226.jpg

在python中有几种方法解决这种问题,简单介绍下,给需要的人:

方法一)使用js脚本直接操作,方法如下:

js="var q=document.getElementById('id').scrollTop=10000"

driver.execute_script(js)

或:

js="var q=document.documentElement.scrollTop=10000"

driver.execute_script(js)

这里的id为滚动条的id,但js中没有xpath的方法,所以滚动条没有id的网页此方法不适用

方法二)使用js脚本拖动到提定地方

target = driver.find_element_by_id("id_keypair")

driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

这个方法可以将滚动条拖动到需要显示的元素位置,此方法用途比较广,可以使用

方法三)根据页面显示进行变通,发送tab键

在本例中的页面中,密码是输入框,正常手工操作时,可以通过tab键会切换到密码框中,所以根据此思路,在python中也可以发送tab键来切换,使元素显示

from selenium.webdriver.common.keys import Keys

driver.find_element_by_id("id_login_method_0").send_keys(Keys.TAB)

update

前段时间使用robotframe work框架时,selenium2library里面有一个非常好用的功能Focus,会自动定位到元素,研读一下源码:

def focus(self, locator):

"""Sets focus to element identified by `locator`."""

element = self._element_find(locator, True, True)

self._current_browser().execute_script("arguments[0].focus();", element)

从源码中我们可以看到,此方法与我们在python自己写的方法二)一致,工具给我们做了封装。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python滚动条_python中selenium操作下拉滚动条的几种方法汇总相关推荐

  1. Java selenium操作下拉滚动条的几种方法

    数据采集中,经常遇到动态加载的数据,我们经常使用selenium模拟浏览器操作,需要多次下拉刷新页面才能采集到所有的数据,就此总结了几种selenium操作下拉滚动条的几种方法 我这里演示的是Java ...

  2. python select模块安装_python+selenium select下拉选择框定位处理方法

    一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...

  3. java excel 数据有效性_Excel设置数据有效性实现单元格下拉菜单的3种方法

    Excel设置数据有效性实现单元格下拉菜单的3种方法 一.直接输入: 1.选择要设置的单元格,譬如A1单元格: 2.选择菜单栏的"数据"→"有效性"→出现&qu ...

  4. 设置数据有效性实现单元格下拉菜单的3种方法

    设置数据有效性实现单元格下拉菜单的3种方法 一.直接输入:     1.选择要设置的单元格,譬如A1单元格:     2.选择菜单栏的"数据"→"有效性"→出现 ...

  5. 生成下拉框的几种方法总结——数据来源:数据库

    下拉框的内容可以来自数据库.枚举.自己在程序中的定义等,我们今天来介绍一下先介绍来自数据库的数据进行下拉列表的实现. 使用场景:客户下拉列表等 1.确保数据库中有相关客户信息数据. 2.获取数据格式( ...

  6. python爬虫selenium操作下拉框详解

    使用python爬虫的selenium操作网页的下拉框. 以该网站为例:https://www.17sucai.com/pins/demo-show?id=5926 该网页下存在多个可供测试的下拉框. ...

  7. python list删除元素_python中List添加、删除元素的几种方法

    原博文 2015-06-21 18:51 − 一.python中List添加元素的几种方法 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非 ...

  8. python管道安装包_Python 炫技操作:安装包的八种方法

    1. 使用 easy_install easy_install 这应该是最古老的包安装方式了,目前基本没有人使用了.下面是 easy_install 的一些安装示例# 通过包名,从PyPI寻找最新版本 ...

  9. python 运算符重载_Python 炫技操作:模块重载的五种方法

    点击上方"Python编程时光",选择"加为星标"第一时间关注Python技术干货!明哥原创的200页<PyCharm 中文指南> 震撼发布 系列文 ...

最新文章

  1. 电脑蓝屏原因分析利器
  2. ASP.NET MVC 入门4、Controller与Action
  3. 【Pytorch神经网络实战案例】10 搭建深度卷积神经网络
  4. 微服务精华问答 | 微服务有什么优点和不足呢?
  5. 15-Scala使用Option、Some、None,避免使用null
  6. [译文]Domain Driven Design Reference(六)—— 提炼战略设计
  7. pandavan路由器升级php到7,中兴E8820S改spi刷Pandavan固件作为有线路由
  8. 【软考】数据库系统工程师备考指南(一)
  9. 【Qt编程】基于Qt的词典开发系列二--本地词典的设计
  10. input框隐藏和不可编辑
  11. Dynamic Memory Tensor Networks笔记
  12. 如何调用common.js
  13. 雷林鹏分享:PHP 创建 MySQL 表
  14. Windows锁屏图片文件存放位置
  15. Python库资源大全列表
  16. 识别 零极点 matlab,matlab计算零极点分布图
  17. Zabbix最新6.2安装及使用!
  18. c语言求圆的周长和面积
  19. 基于微信小程序的校园二手商城设计与开发
  20. iOS刘海机型UI适配(X、Xs、Xs Max、Xr)

热门文章

  1. 2020 操作系统第五天复习(知识点总结)
  2. git放弃本地修改,强制覆盖本地文件
  3. 巨鲸任务调度平台:spark flink任务调度
  4. vscode前端常用插件整理(vuejs)
  5. Scala父类构造方法
  6. Object类toString()和equals()方法剖析
  7. springboot spring.config.location外挂配置文件实战
  8. Matlab---寻找峰值函数
  9. 安卓 Handler使用方法
  10. 还没掌握Linux文件权限与目录配置命令?就这还不点进来看看干货