WebDiver 不能操作本地 Windows 控件,但对于浏览器上的控件也不是都可以操作的。比如浏览器的滚动条,虽然 WebDriver 提供操作浏览器的前进和后退按钮,但对于滚动条并没有提供相应用的方法。
那么在这种情况下就可以借助 JavaScript 方法来控制浏览器滚动条。WebDriver 提供了 execute_script()方法来执行 JavaScript 代码。

一般用到操作滚动条的会两个场景:

  • 注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方。
  • 要操作的页面元素不在视觉范围,无法进行操作,需要拖动滚动条。

用于标识滚动条位置的代码

……
<body onload= "document.body.scrollTop=0 ">
<body onload= "document.body.scrollTop=100000 "> ……

document.body.scrollTop

scrollTop 设置或获取滚动条与最顶端之间的距离。如果想让滚动条处于顶部,那么可以设置 scrollTop 的值为 0,如果想让滚动条处于最底端,可以将这个值设置的足够大,大个窗口的高度即可。scrollTop 的值以像素为单位。

#coding=utf-8
from selenium import webdriver
import time
#访问百度
driver=webdriver.Firefox()
driver.get("http://www.baidu.com") #搜索
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3) #将页面滚动条拖到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(3)

#将滚动条移动到页面的顶部
js_="var q=document.documentElement.scrollTop=0"
driver.execute_script(js_)
time.sleep(3)

#将滚动条移动到页面的中间
js_="var q=document.documentElement.scrollTop=500"
driver.execute_script(js_)
time.sleep(3)

driver.quit()

通过浏览器打开百度进行搜索,搜索的一屏无法完全显示将会出现滚动条。这个时候就可以通过
JavaScript 代码控制滚动条在任意位置,需要改变的就是 scrollTop 的值。通过 execute_script()方法来执行这段 JavaScript 代码。

Selenium(十三)调用js,控制浏览器的滚动条的更多相关文章

  1. Selenium 2自动化测试实战21【调用JavaScript(控制浏览器的滚动条)】

     一.调用JavaScript(控制浏览器的滚动条) WebDriver提供了execute_script()方法来执行JavaScript代码.用于调整浏览器滚动条位置的JavaScript代码如下 ...

  2. Java&Selenium自动化测试调用JS实现单击

    Java&Selenium自动化测试调用JS实现单击 /* * the method of invoking js to do something * * @author davieyang ...

  3. 《selenium2 python 自动化测试实战》(15)——调用js控制滚动条等操作

    看代码: # coding=utf-8 from time import sleepfrom selenium import webdriver driver = webdriver.Firefox( ...

  4. js控制浏览器全屏

    HTML 5中的full screen,目前可以在除IE和opera外的浏览器中使用 ,有的时候用来做全屏API,游戏呀,等都很有用.先看常见的API element.requestFullScree ...

  5. python selenium中调用js

    python 中js中单引号和双引号混合编程 js = 'document.getElementsByName("m:ybzbxmbd:b_BIANHAO")[0].setAttr ...

  6. js 控制浏览器窗口大小

    //打开一个新窗口并设置其大小window.open('index.html','','width=450,height=750,location=no,menubar=no,status=no,to ...

  7. js控制浏览器后退

    <script type="text/javascript"> window.history.forward(1); </script>

  8. Selenium with Python 005 - 调用js操作页面元素

    WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...

  9. webdriver 属于selenium 体系中设计出来操作浏览器的一套API

    1.元素的定位   1.id属性定位 实例:   find_element_by_id("kw")  2.name属性定位,同id一样是属性值 实例:  find_element_ ...

随机推荐

  1. 微信公众号使用vue,安卓端点击按钮404,ios访问正常问题

    情景:微信公众号使用vue开发的单页面,在安卓端点击按钮访问显示404,ios访问正常问题,能正常显示. 解决:将微信公众号菜单按钮设置的路径中把WWW去掉后,安卓.ios都能正常访问. 问题路径ww ...

  2. 023 Android 自定义Toast控件

    1.Toast自定义控件工具类 package com.example.administrator.test62360safeguard.Utils; import android.content.C ...

  3. CF731E Funny Game

    题目描述 一个长度为 N 的序列 ai ,双方轮流操作 每次的操作是选择一个长度大于 1 的前缀,计算它的和 s ,然后 用 s 替换它的前缀,同时当前玩家获得 s 的分数. 当只剩下一个元素,游戏结 ...

  4. Acuntetix的安装与使用

    1.下载软件压缩包文件,首先点击"Acunetix.Web.12.0.180911134.Retail.exe"安装最新版原程序 2.阅读并同意软件安装协议 3.设置登录信息,包括 ...

  5. k8s 启动pod的问题

    版本: k8s 1.5 docker 1.3 CentOS 7.6 使用命令 kubectl get pods输出no resources.解决方法是修改 apiserver 的配置文件 vim /e ...

  6. MySQL事务原理浅析

    前言​ 因为自己对数据的可靠性,可用性方面特别感兴趣,所以在MySQL事务方面看了很多资料,也看了很多博客,所以想到自己也写一篇博客整理整理自己所学内容,尽量用自己的语言解释得通俗易懂. 事务经典场景 ...

  7. 音量调节条-封装通用的ProgressBar组件

    import React, { Component } from 'react' import PropTypes from 'prop-types' import assign from 'obje ...

  8. 服务篇:我的第一WebService应用

    一.我的第一个Webservice应用 1.新建一个空项目 2.添加新项,加入asmx,并再浏览器浏览 3.添加一个aspx网页 4.右键引用→添加服务引用→高级→添加Web引用,输入再浏览器浏览的a ...

  9. 浅谈(IOC)依赖注入与控制反转(DI)

    前言:参考了百度文献和https://www.cnblogs.com/liuqifeng/p/11077592.html以及http://www.cnblogs.com/leoo2sk/archive ...

  10. FTP搭建注意事项

    正常的FTP搭建步骤很简单,随便网搜一篇文章就出来了 下面提出一个网址可供学习 https://blog.csdn.net/m0_38044299/article/details/81627607 但 ...