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语法

  

转载于:https://www.cnblogs.com/keima/p/10972260.html

selenium元素等待及滚动条滚动相关推荐

  1. 解决IE6,IE7下子元素使用position:relative、父元素使用overflow:auto后,子元素不随着滚动条滚动的问题...

    解决IE6,IE7下子元素使用position:relative.父元素使用overflow:auto后,子元素不随着滚动条滚动的问题 在IE6,IE7下,子元素使用position:relative ...

  2. Selenium - 元素等待与智能等待

    UI层面的自动化的测试,由于网络.电脑配置等因素的不同,导致页面的加载速度不同,因此为了保证测试脚本的稳定性,需要在脚本中添加相应的等待时间. 1. 休眠等待 添加休眠非常简单,只需要引入python ...

  3. Selenium自动化测试-设置元素等待

    ------·今天距2020年54天·------ 这是ITester软件测试小栈第75次推文 selenium中有三种时间等待: 强制等待:sleep 隐式等待:implicitly_wait 显示 ...

  4. 使用Selenium含蓄等待获取页面元素(附带实际业务需求情景)

    Hello,大家好,又到了小猿分享技术的时间了.这回带来的是使用Selenium去网站上获取部分信息并且执行部分操作以及"含蓄"等待元素加载完成以及截取图片和网页刷新机制的技术点. ...

  5. Python Selenium之等待元素小案例(用于某网站自动打开领取QQ名片赞)--文末有附selenium知识点以及对应学习文档网址

    ''' Author: Liang LastEditors: Liang Date: 2020-10-08 11:41:09 LastEditTime: 2020-10-21 13:46:21 Ema ...

  6. java selenium div内嵌滚动条 网页长截图发邮件

    java selenium 网页内嵌滚动条截图发邮件 主要问题 下面展开说 由于公司要求做一个接口,请求这个接口进行网页截图并发送邮件的功能,本来前期是用python写好了,but似乎不太符合要求,那 ...

  7. Selenium基础 — Selenium操作浏览器窗口滚动条

    1.为什么操作滚动条 在HTML页面中,由于前端技术框架的原因,页面中的一些元素为动态显示,元素根据滚动条的下拉而被加载. 例如:页面注册同意条款,需要滚动条到最底层,才能点击同意. 2.Seleni ...

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

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

  9. 固定DIV不随滚动条滚动

    在项目开发中,有的页面的某些按钮,我们是不想让他跟着滚动条滚动的,比如,添加页面,有很长的内容添加,在往下滚动添加的过程中,我们始终想看到保存按钮.OK! 1 2 3 4 5 6 7 8 9 10 1 ...

最新文章

  1. [New Portal]Windows Azure Virtual Machine (18) Azure Virtual Machine内部IP和外部IP
  2. mybatis BindingException: Invalid bound statement (not found)
  3. 论文浅尝 | 基于Freebase的问答研究
  4. brew 安装php56,homebrew安装php5.6后的信息
  5. tasklet内核源代码分析
  6. C#Repeater控件的使用
  7. 傅里叶变换进行图像变换Matlab实现
  8. js实现图片在一个div中点击按钮放大缩小效果
  9. Python使用opencv识别简单图片中的主颜色
  10. 502 bad gateway原因、解决方法
  11. dfuse SQE 结构化查询引擎发布:颠覆 Web 3.0 开发
  12. python 多因素方差分析_SPSS分析技术:多元方差分析
  13. android 反编译 jadx,jadx gui下载 jadx(Android反编译gui工具) v0.6.1 官方版 下载-脚本之家...
  14. 计算机无法准确计算浮点数,浮点数计算异常原因(转)
  15. 如何脱离USB给ESP8266下载程序?
  16. python获取主板序列号_LabVIEW获取主板序列号和硬盘序列号以进行软件加密
  17. 乐鑫ESP32移植LVGL 7.10
  18. iphone下拉菜单卡住了_苹果手机怎么下拉菜单 苹果x右上角下拉失灵怎么办
  19. MySQL - SUM() OVER() 函数用法详解
  20. ubuntu安装mysql-python报错

热门文章

  1. (Redis_学习一)Redis关于string类型和hash类型数据操作
  2. python 知乎关系图谱_5000行python代码+可视化60W数据,告诉你知乎用户不为人知的事...
  3. Linux下的FTP服务
  4. 手工卡纸做机器人_亲子手工,带孩子用彩色卡纸做一朵可爱的小花,有教程
  5. 数据库设计原则与开发规范,你知道多少?
  6. learning rate 学习速率
  7. 去中心化交易协议 Bancor 新增支持限价订单
  8. Kaggle 数据清洗挑战 Day 3 - 快速解析日期(date)数据
  9. HTML不熟悉方法总结
  10. 如何在同一地方组建多个 ZigBee 网络