ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-03-23 17:59:31  阅读:248  来源: 互联网

标签:webdriver wd 句柄 frame window switch 切换 自动化


一、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:\BrowserDriver\geckodriver.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:\BrowserDriver\geckodriver.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)

标签:webdriver,wd,句柄,frame,window,switch,切换,自动化
来源: https://www.cnblogs.com/Free-Ink/p/12553674.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有