美文网首页
Frame切换

Frame切换

作者: 酷飒de小姐姐 | 来源:发表于2021-06-03 09:07 被阅读0次

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页面的实现代码如下:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>iframe-HTML</title>

</head>

<body>

<div class="alert" align="center">The link

    <a class="alert-link" href="http://www.baidu.com">baidu</a>

</div>

<div class="row-fluid">

    <div class="span-ifram" align="center">

        <h4 align="center">iframe</h4>

        <iframe id = "iname" name="nf" src="https://cn.bing.com" width="800" height="600"></iframe>

    </div>

</div>

</body>

</html>

单击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()

相关文章

网友评论

      本文标题:Frame切换

      本文链接:https://www.haomeiwen.com/subject/izkgsltx.html