• selenium之三大窗口切换


    selenium的三大窗口切换分别是:Windows窗口切换、iframe切换,alter切换

    1、Windows窗口切换

    windows窗口用句柄来唯一标识,于是可以采用获取句柄的方法来切换窗口。

    selenium提供了switch_to.window()的方法来切换窗口,里面传入句柄的值,即可切换到对应的窗口

    首先要获取窗口句柄,使用driver.window_handles获取所有句柄,存放在一个列表中,然后根据下标进行切换(下标从0开始,最后一个也可以用-1表示)

    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")
    driver.implicitly_wait(10)
    # 在百度输入框输入“微博”,点击查询
    driver.find_element_by_xpath("//input[@id='kw']").send_keys('微博')
    driver.find_element_by_xpath("//input[@id='su']").click()
    # 点击查询结果中的第一条内容
    loc = (By.XPATH,"//div[@id='1']/h3[@class='t']/a/em")
    # 显性等待
    WebDriverWait(driver,10).until(EC.presence_of_element_located(loc))
    driver.find_element(*loc).click()
    # 获取当前所有窗口的句柄
    windows = driver.window_handles
    print(windows)
    #切换窗口
    driver.switch_to.window(windows[-1])
    

    2、iframe切换

    很多网站我们在点击一个按钮后会弹出一个新的窗口进行数据填写,这些窗口很多都是iframe窗口,如果不先切换到对应的iframe,是无法对其中的元素进行操作的

    iframe的切换方式:switch_to.frame()-----这个括号中的可以填iframe的下标,从0开始driver.switch_to.frame(2)

                                                              ------括号中的内容可以填iframe的id或name,driver.switch_to.frame("name")

                                                             -------括号中还可以是元素对象,driver.switch_to.frame(driver.find_element_by_name(''))

    例如下面这个iframe,它没有对应的id和name值,除了可以根据索引定义外,还可以根据它的class对象定位driver.switch_to.frame(driver.find_element_by_class_name('iframeclass'))

    3、alter切换

     什么是alter窗口呢?就是系统弹出的提示框

     对于这种alter无非就是确定操作,取消操作,获取界面文本

    al = driver.switch_to.alert

    al.text   # 获取文本

    al.dismiss()  # 取消

    al.accept()  # 确定

      

  • 相关阅读:
    成都的收藏品市场
    微信小程序 如何定义全局函数?
    Linux下 安装VMware Tools工具
    小程序圆角进度条实现方法
    Excel 将换行符替换为空
    再次学习mysql优化
    Subl 命令
    时间见证着—eternal life
    大巧不工web前端设计修炼之道—笔记
    批量更新某字段内容
  • 原文地址:https://www.cnblogs.com/shu-hua/p/12556055.html
Copyright © 2020-2023  润新知