selenium元素等待及滚动条滚动

selenium三大等待,sleep(强制)、implicitlyWait(隐式等待)、WebDriverWait(显式等待),主要记一下最后面的WebDriverWait。

WebDriverWait是三大等待中最常用也是最好用的一种等待方式,比起另外两种而言,B格更高、更智能。写法为:

#WebDriverWait(driver,等待总时长,查询间隔时间).until(EC.visibility_of_element_located((By.XPATH,Xpath公式)))
# 例如:
cj = '//span[text()="19/05/27"]/parent::p/parent::div/preceding-sibling::div[@class="announce-cont clearfix"]//a[text()="查看成绩"]'
WebDriverWait(driver,30,0.5).until(EC.visibility_of_element_located((By.XPATH,cj)))

 在iframe中也可以使用WebDriverwait,例如:

WebDriverWait(driver,30,0.5).until(EC.frame_to_be_available_and_switch_to_it("login_frame_qq"))
# 其中"login_frame_qq"是iframe的name属性;
# "EC.frame_to_be_available_and_switch_to_it"这句话的意思是等待并切换至,也就是说这句话等同"EC.visibility_of_element_located"+"driver.switch_to_frame"

例子中的等待含义为总时长30S,每间隔0.5S查询一次until括号中的函数。EC为selenium.webdriver.support.expected_conditions的缩写,visibility_of_element_located的用法是查询后跟元祖中指定的元素是否可见。

要格外注意的是visibility_of_element_located()中只能传入一个函数,所以一般使用(By.XPATH,xpath)源码:

class visibility_of_element_located(object):""" An expectation for checking that an element is present on the DOM of apage and visible. Visibility means that the element is not only displayedbut also has a height and width that is greater than 0.locator - used to find the elementreturns the WebElement once it is located and visible"""def __init__(self, locator):self.locator = locatordef __call__(self, driver):try:return _element_if_visible(_find_element(driver, self.locator))except StaleElementReferenceException:return False

再来看一下滚轮滑动的几种用法

  1.滑动到指定元素顶端显示:

	
driver.execute_script('argument[0].scrollIntoView();',driver.find_element_by_xpath(xpath)) 

 2.滑动到指定元素底端显示:

driver.execute_script('argument[0].scrollIntoView(false);',driver.find_element_by_xpath(xpath))

3.页面滑动到底端:

driver.execute_script('windows.scrollto(0,document.body.scrollHeight)')

 

4.页面滑动到顶端:

driver.execute_script('windows.scrollto(document.body.scrollHeight)')

其中包含指定元素的使用时只用注意scrollIntoView后是否跟随false,有则底端、无则顶端;其次页面滑动时只用注意最后是否从0开始,从0开始则为底端、无则顶端

  顺带说一下driver.execute_script()这个函数,这个函数括号内主要跟随js语句

  用法例如:

driver.execute_script('argument[0].scrollIntoView(false);''var a = argument[1]',driver.find_element_by_xpath(xpath),num1)   
# 其带入的参数没有数量限制,只是语法必须使用js语法

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 容器修改端口和目录映射

一、容器修改端口映射 一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [container-name] -p 8088:80 [image-name]…

vue3的echarts从后端获取数据,用于绘制图表

场景需求:后端采用flask通过pymysql从数据库获取数据,并返回给前端。前端vue3利用axios获取数据并运用到echarts绘制图表。 第一步,vue中引入echarts 首先vue下载echarts npm install echarts 然后在main.js文件写如下代码 import {create…

东芝工控机维修东芝电脑PC机维修FA3100A

TOSHIBA东芝工控机维修电脑控制器PC机FA3100A MODEL8000 UF8A11M 日本东芝TOSHIBA IA controller维修SYU7209A 001 FXMC12/FXMC11;BV86R-T2GKR-DR7YF-8CPPY-4T3QD; CPU处理单元是可编程逻辑控制器的控制部分。它按照可编程逻辑控制器系统程序赋予的功能接收并存储从编程器键入…

基于 LVGL 使用 SquareLine Studio 快速设计 UI 界面

目录 简介注册与软件获取工程配置设计 UI导出源码板级验证更多内容 简介 SquareLine Studio 是一款专业的 UI 设计软件,它与 LVGL(Light and Versatile Graphics Library,轻量级通用图形库)紧密集成。LVGL 是一个轻量化的、开源的…

K8S之Deployment的介绍和使用

Deployment的理论和实操 Deployment控制器:概念、原理解读概述工作原理 编写Deployment资源清单文件使用案例:创建一个web站点Deployment管理pod:扩容、缩容通过deployment管理应用,实现扩容,把副本数变成3通过deploym…

135 Linux 系统编程12,linux命令重定向,dup 和dup2,fcntl实现dup和dup2 ,进程和程序概念,虚拟内存和物理内存映射关系,pcb进程块详解

一 linux 命令中重定向,使用>实现 通过 大于号 将前面的内容写入到某一个地方 cat main.c > b.txt //cat main 本身的意思是 显示main.c的值,后面加上 > b.txt 会将显示在屏幕上的字符全部写到b.txt中 例子:将 ls -l 的内容 通…

JavaScript最新实现城市级联操作,json格式的数据

前置知识&#xff1a; <button onclick"doSelect()">操作下拉列表</button><hr>学历&#xff1a;<select id"degree"><option value"0">--请选择学历--</option><option value"1">专科<…

配置前端项目到 github-pages

Quickstart for GitHub Pages - GitHub Docs

【Day59】代码随想录之动态规划_647回文子串_516最长回文子序列

文章目录 动态规划理论基础动规五部曲&#xff1a;出现结果不正确&#xff1a; 1. 647回文子串2. 516最长回文子序列 动态规划理论基础 动规五部曲&#xff1a; 确定dp数组 下标及dp[i] 的含义。递推公式&#xff1a;比如斐波那契数列 dp[i] dp[i-1] dp[i-2]。初始化dp数组…

AxureCloud配置文件详细介绍

AxureCloud配置文件详细介绍 原文地址&#xff1a;https://docs.axure.com/axure-cloud/business/custom-settings-json/ 通过修改 customsettings.json 可以修改AxureCloud私有部署的域名、端口、HTTPS、存储目录、是否开启插件等, 默认安装的路径为: C:\Program Files\Axure…

白介素IL-17靶点作用机制、全球在研管线与临床试验结果汇总分析

IL-17与化脓性汗腺炎疾病 化脓性汗腺炎&#xff08;Hidradenitis suppurativa&#xff0c;HS&#xff09;&#xff0c;也称为反痤疮&#xff0c;是一种慢性致残性和衰弱性炎症性疾病&#xff0c;其特征是深部疼痛的结节和脓肿、瘘管、窦道和疤痕&#xff0c;全球发病率约为1%~…

Mysql的储存引擎

储存引擎介绍 1. 文件系统 操作系统存取数据的一种机制 2. 文件系统类型 不管使用什么文件系统&#xff0c;数据内容不会变化 不同的是&#xff0c;存储空间、大小、速度 3. MySQL存储引擎 可以理解为&#xff0c;MySQL的“文件系统”&#xff0c;只不过功能更加强大 4. MySQL…

安装极狐GitLab Runner并测试使用

本文继【新版极狐安装配置详细版】之后继续 1. 添加官方极狐GitLab 仓库&#xff1a; 对于 RHEL/CentOS/Fedora&#xff1a; curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash2. 安装最新版本的极狐G…

Django项目使用vue打包前端页面使用教程

一、vue打包&#xff1a; 一般使用 npm run build 进行打包&#xff0c;打包完成后会生成一个dist文件夹 二、修改vue.config.js配置 vue.config..js配置里面增加&#xff1a; assetsDir: static 三、修改Django项目 将Django的static文件夹删除&#xff0c;移动di…

Flink动态分区裁剪

1 原理 1.1 静态分区裁剪与动态分区裁剪 静态分区裁剪的原理跟谓词下推是一致的&#xff0c;只是适用的是分区表&#xff0c;通过将where条件中的分区条件下推到数据源达到减少分区扫描的目的   动态分区裁剪应用于Join场景&#xff0c;这种场景下&#xff0c;分区条件在joi…

Oracle中序列

1. Sequence 定义 在Oracle中可以用SEQUENCE生成自增字段。Sequence序列是Oracle中用于生成数字序列的对象&#xff0c;可以创建一个唯一的数字作为主键。 2. 为什么要用 Sequence 你可能有疑问为什么要使用序列&#xff1f; 不能使用一个存储主键的表并每次递增吗&#xf…

milvus upsert流程源码分析

milvus版本:v2.3.2 整体架构: Upsert 的数据流向: 1.客户端sdk发出Upsert API请求。 import numpy as np from pymilvus import (connections,Collection, )num_entities, dim 4, 3print("start connecting to Milvus") connections.connect("default",…

11.题目:编号3272 小蓝的漆房

题目&#xff1a; ###本题主要考察暴力&#xff0c;枚举&#xff0c;模拟 #include<bits/stdc.h> using namespace std; const int N1e410; int a[N],b[N]; int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int num;cin>>num;//样例个数循环for(int i…

socket套接字

前言 两个应用程序如果需要进行通讯最基本的一个前提就是能够唯一的标示一个进程&#xff0c;我们知道IP层的ip地址可以唯一标示主机&#xff0c;而TCP层协议和端口号可以唯一标示主机的一个进程&#xff0c;这样我们可以利用ip地址&#xff0b;协议&#xff0b;端口号唯一标示…

许战海矩阵|佐香园:“熟酱”的爆品战略

佐香园是辽宁帝华味精食品有限公司的主导品牌&#xff0c;是一个拥有自主研发与生产经营能力的民营企业&#xff0c;主要生产和销售香料、调味料以及食品添加剂等产品。该品牌自创办以来&#xff0c;一直坚持以市场为导向&#xff0c;走专业化发展之路&#xff0c;打造全方位的…