selenium之显隐式等待、frame表单切换、多窗口切换、窗口截图

一, 显隐式等待

1,显示等待

含义:最长等待XX秒直到定位到某元素进行下一步,达到最大时长还没定位到时抛出超时异常(TimeoutException)

1)调用方法:

  1. 导包 等待类 --> from selenium.webdriver.support.wait import WebDriverWait
  2. 导包 判断条件 (将expected_conditions 通过as关键字起个别名:EC) --> from selenium.webdriver.support import expected_conditions as EC
  3. WebDriverWait(driver, timeout, poll_frequency=0.5)
    1). driver:浏览器对象
    2). timeout:超时的时长,单位:秒
    3). poll_frequency:检测间隔时间,默认为0.5秒
  4. 调用方法 until(method):直到…时
    1). method:调用EC.presence_of_element_located(element)
    element:调用By类方法进行定位

2) 代码示例

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
url = r'C:\test\注册A.html'
driver = webdriver.Firefox()
driver.get(url)
# 最长等待5秒,直到定位到userA元素
element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, 'userA')))
element.send_keys("admin")

2,隐式等待

含义:如果定位某一元素定位失败,那么就会触发隐式等待有效时长,如果在指定时长内加载完毕,则继续执行,否则抛出NoSuchElementException异常,如果元素在第一次就定位到则不会触发隐式等待时长。较为常用

调用方法:

driver.implicitly_wait(10)
(driver:为浏览器实例化对象名称)

二,frame表单切换

frame表单:HTML页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素;(HTML语言中,frame/iframe标签为表单框架)

调用方法

1).
a)若iframe具有id属性,直接使用id属性值切换进内层页面
driver.switch_to.frame(value)
b) 定位到iframe元素,再切换进入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el)

2).
a). 跳回最外层的页面
driver.switch_to.default_content() – 切换到最外层(对于多层页面,可通过该方法直接切换到最外层)
b).跳回上层的页面
driver.switch_to.parent_frame() – 进行向上的单层切换
在frame表单中操作其他页面,必须先回到默认页面,才能进一步操作)

三,多窗口切换

说明:在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
(句柄:英文handle,窗口的唯一识别码)

调用方法:

1). driver.current_window_handle          --> 获取当前窗口句柄
2). driver.window_handles                 --> 获取所有窗口句柄
3). driver.switch_to.window(handle)       --> 切换指定句柄窗口

四,窗口截图

说明:在WebDriver类库中,提供了截图方法,我们只需要调用即可;

调用方法:

1). driver.get_screenshot_as_file(imgpath)   --> 截取当前窗口(imgpath:图片保存路径)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值