• 自动化5-frame切换和窗口切换


    一、iframe元素

      1、iframe元素:iframe是HTML标签,作用是文档中的文档,或者浮动的框架(FRAME)。iframe元素会创建包含另外一个文档的内联框架(即行内框架)。

        ——》使用 find_element_by_class_name等时会出现不识别的问题,操作范围是当前的html,不包含内嵌的html文档里面的内容。

        ——》若要操作其中的元素,必须 切换操作范围 到 被嵌入的文档中。(iframe内部

          切换方式:使用webDriver对象的switch_to属性

                wd.switch_to.frame(frame_reference)

                frame_reference可以是frame元素的属性name或ID或者frame对应的WebElement对象。

                可以依据frame的元素位置或属性特性,使用find系列的方法,选择该元素,得到对应的WebElement对象。

            Iframe外部:使用 default_content()

     1 from selenium import webdriver
     2 wd = webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe')
     3 wd.get('http://cdn1.python3.vip/files/selenium/sample2.html')
     4 # 选择内部元素
     5 wd.switch_to.frame('innerFrame')
     6 # 选择外部元素
     7 wd.switch_to.default_content()
     8 elements = wd.find_elements_by_class_name('animal')
     9 for element in elements:
    10     print(element.text)
    11 wd.find_element_by_id('outerbutton').click()
    12 wd.quit()

      2、切换新的窗口

     1 # 切换新窗口: 使用webdriver对象的switch_to属性里面的window方法。格式:wd.switch_to.window(handle),
     2 # webdriver对象有window_handles属性,这是个列表对象,里面包括了当前浏览器里面所有的窗口句柄
     3 # 句柄:网页窗口的id。
     4 '''
     5 from selenium import webdriver
     6 wd = webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe')
     7 wd.get('http://cdn1.python3.vip/files/selenium/sample3.html')
     8 link = wd.find_element_by_tag_name('a')
     9 link.click()
    10 for handle in wd.window_handles:
    11     wd.switch_to.window(handle)
    12     if 'Bing' in wd.title:
    13         break
    14 print(handle.title)

        可以先保存当前窗口的句柄,在切换新窗口之后,再将driver对应的对象返回到原来的窗口:

      # mainWindow变量保存当前窗口的句柄

      mainWindow = wd.current_window_handle

       #通过前面保存的老窗口的句柄,自己切换到老窗口
      wd.switch_to.window(mainWindow)

  • 相关阅读:
    机器学习(二)分类决策树
    机器学习(一):朴素贝叶斯
    NLP(五):关键词提取补充(语料库和向量空间)
    oracle变量的定义和使用【转】
    一些开发技巧和工具使用心得
    醒狮赋
    C# 字符串的截取和替换
    C# 判断字符串是否为日期格式
    重装系统
    电脑桌面所有图标消失
  • 原文地址:https://www.cnblogs.com/Free-Ink/p/12553674.html
Copyright © 2020-2023  润新知