Frame切换

时间:2021-6-4 作者:qvyue

Frame标签有Frameset、Frame和IFrame 3种,Frameset跟其他普通标签没有区别,不会影响到正常的定位。在页面中经常能看到Frame或IFrame(Frame是整个页面的框架,IFrame是内嵌的框架),由于WebDriver定位元素时只能在一个页面上定位,所以对于IFrame这样的情况,WebDriver是无法直接定位到元素的。Selenium中有对应的方法对Frame进行操作。

WebDriver提供了switch_to.frame()方法来切换Frame,格式如下:

switch_to.frame(定位元素)

1.切换IFrame

案例描述如下:·外部页面有个指向baidu的链接;·内嵌的页面是通过IFrame实现的,嵌套的是Bing首页。

iframe.html页面的实现代码如下:

   

   

iframe-HTML

The link

    baidu

   

       

iframe

       

   

单击Bing搜索页的搜索框完成关键字的搜索。iframe.html代码中IFrame标签的id等于”iname”。实现代码如下:

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get(“D:\protect\python\selenuim\module\iframe.html”)

driver.switch_to.frame(“iname”)#切换窗体

time.sleep(2)

driver.find_element_by_xpath(“//*[@id=’sb_form_q’]”).send_keys(“selenium”)

driver.find_element_by_xpath(“//*[@id=’sb_form_go’]”).click()

time.sleep(2)

driver.quit()

2.切换到主窗体

当切换到子窗体Frame中之后,便不能继续操作主窗体中的元素了,这时如果要操作主窗体中的元素,则需切换回主窗体。

基于上面的用例,当对Bing搜索页完成操作后,如想单击外部的baidu链接,则需要切换到主窗体。切换到主窗体的方法是driver.switch_to.default_content()。实现代码如下:

driver.get(“D:\protect\python\selenuim\module\iframe.html”)

driver.switch_to.frame(“iname”)#切换窗体

time.sleep(2)

driver.find_element_by_xpath(“//*[@id=’sb_form_q’]”).send_keys(“selenium”)

driver.find_element_by_xpath(“//*[@id=’sb_form_go’]”).click()

driver.switch_to.default_content()#跳到最外层

driver.find_element_by_xpath(“/html/body/div[1]/a”).click()

time.sleep(2)

driver.quit()

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。