zoukankan      html  css  js  c++  java
  • web自动化--窗口切换

    窗口切换

    handles = driver.window_handles ------获取所有窗口句柄,返回的数据是一个列表类型
    driver.switch_to.window(handles[-1]) -----切换窗口,因为返回的数据是列表类型,所以可以根据索引进行切换

    窗口等待和window窗口切换

    ----点击打开新窗口的时候,需要又一个等待的过程;避免窗口没有打开就进行接下来的元素查找,程序报错
    WebDriverWait(driver, 30).until(EC.new_window_is_opened(before_handles))
    -----等待用的还是之前说的现实等待的句式,条件换成new_window_is_opend.
    -----这里的locator是before_handles,就是点击打开新窗口之前的所有窗口句柄;理论来说,点击打开一个新窗口后再获取所有窗口句柄,得到的值肯定会比点击之前多,这样才能符合new_window_is_open这个函数。所以before_handles一定是在点击打开新窗口这个操作之前获取的

    ---获取当前窗口句柄 driver.current_window_handle
    ps:等待只是等待,不具备切换功能,即等待新窗口打开后,当前窗口句柄还是之前的,不会是新打开的那个窗口!

    iframe切换

    1. iframe切换有3种方式:索引/name/webelement

    1.1 通过name切换
    driver.switch_to.frame("baidu")

    1.2 通过webelement切换
    iframe_element = driver.find_element_by_xpath('//iframe[@name="baidu"]')
    driver.switch_to.frame(iframe_element)

    frame等待,等待后自动完成切换
    WebDriverWait(driver, 10).until(
    EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@name="baidu"]')))

    1. 退出iframe,切换回主页面---记住切换回主页面,不然无法定位主页面元素
      driver.switch_to.default_content()

    2. 如果有多个iframe嵌套,如何切换到父级iframe
      driver.switch_to.parent_frame()

    3. 如何判断需要定位的元素是否在iframe里面
      在浏览器查看源码的时候,通过元素定位,然后查看下面元素框,如果有iframe,那么这个元素就是在iframe里面的

    定位alert

    1 切换到alert,switch_to后面不需要再加括号 driver.switch_to.alert
    2. 点击alert的确认按钮 driver.switch_to.alert.accept()
    3. 点击alert的取消按钮 driver.switch_to.alert.dismiss()
    4. alert等待 WebDriverWait(driver, 10).until(EC.alert_is_present())

    点击确认或者取消后,就关闭了弹窗,直接返回的主页面;同一时间内只会弹出一个alert
    如何区分是alert还是一个普通元素----通过浏览器定位,可以定位到的就是元素,定位不到的就是alert

    厚积而薄发,越努力越幸运!
  • 相关阅读:
    【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(一)
    关于jave在oracle驱动下事务提交与回滚问题
    将其它图片格式转为.eps格式
    学习OpenBlas
    ZOJ3640-Help Me Escape
    向死而生——我修的死亡学分
    iOS对象属性详解
    http状态码介绍
    8080端口被占用
    图片特效
  • 原文地址:https://www.cnblogs.com/qhy-petrel/p/12218332.html
Copyright © 2011-2022 走看看