定位 frame 中的对象

1、脚本准备

frame.html 中嵌套 inner.html ,两个文件和我们的脚本文件放同一个目录下。

frome.html代码如下:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>frame</title>
<script type="text/javascript" async="
"src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"
rel="stylesheet" />
    <script type="text/javascript">$(document).ready(function(){
        });
    </script>
</head>
<body>
<div class="row-fluid">
    <div class="span10 well">
        <h3>frame</h3>
        <iframe id="f1" src="inner.html" width="800" height="600"></iframe>
    </div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>

inner.html 代码如下:

 1 <html>
 2 <head>
 3     <meta http-equiv="content-type" content="text/html;charset=utf-8" />
 4     <title>inner</title>
 5 </head>
 6 <body>
 7     <div class="row-fluid">
 8         <div class="span6 well">
 9             <h3>inner</h3>
10             <iframe id="f2" src="http://www.baidu.com" width="700" height="400">
11             </iframe>
12         </div>
13
14     </div>
15 </body>
16 </html>

通过浏览器打开,得到下列页面:

2、代码实现

通过 switch_to.frame 方法来定位 frame 内的元素

 1 #coding=utf-8
 2 from selenium import webdriver
 3 import os
 4 import time
 5
 6 driver = webdriver.Firefox()
 7 file_path = ‘file:///‘+os.path.abspath(‘frame.html‘)
 8 driver.get(file_path)
 9
10 driver.implicitly_wait(5)
11
12 #先找到iframe1(id=f1)
13 driver.switch_to.frame("f1")
14
15 #再找到其下面的ifram2(id=f2)
16 driver.switch_to.frame("f2")
17
18
19 #下面就可以正常的操作元素了
20 driver.find_element_by_id("kw").send_keys("selenium")
21 driver.find_element_by_id("su").click()
22 time.sleep(5)
23
24
25 driver.quit()

3、方法解析

switch_to.frame 方法可以把当前定位的主体切换了 frame 里。frame 中实际上是嵌入了另一个页面,而 webdriver 每次只能在一个页面识别,因此才需要
用 switch_to.frame 方法去获取 frame 中嵌入的页面,对那个页面里的元素进行定位。

时间: 2024-10-11 04:54:12

定位 frame 中的对象的相关文章

【selenium自动化——定位frame中的对象】

页面上有 A.B 两个 frame,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. switch_to_frame 方法可以把当前定位的主体切换到 frame 里 代码示例: from selenium import webdriverimport time...... driver.implicitly_wait(30)#先找到到 ifrome1(id = f1)driver.switch_to_frame("f1")#再找到其下面的 ifrome2(id

转:python webdriver API 之定位 frame 中的对象

在 web 应用中经常会出现 frame 嵌套的应用,假设页面上有 A.B 两个 frame,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B.switch_to_frame 方法可以把当前定位的主体切换了 frame 里.怎么理解这句话呢?我们可以从 frame的实质去理解.frame 中实际上是嵌入了另一个页面,而 webdriver 每次只能在一个页面识别,因此才需要用 switch_to.frame 方法去获取 frame 中嵌入的页面,对那个页面里的元素进行定位

selenium python (八)定位frame中的对象

#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip'#在测试过程中经常遇到frame嵌套的应用,加入页面上有A.B两个frame,B在A内,那么要找到B中的元素,则首先应找到A然后再到B.可以通过switch_to_frame from selenium import webdriverimport  os #打开页面driver = webdriver.Firefox()file_path = 'file:///' +

10. 定位frame中的元素

场景 处理frame需要用到2个方法,分别是switch_to_frame(name_or_id_or_frame_element)和switch_to_default_content() 如何理解这个switch_to_frame(name_or_id_or_frame_element)方法呢?可以简单记忆一下,如果这个 frame有name和id属性那么就用这两个属性就好,如果没有的话可以先用find_element_by_xxx方法找到这个frame元素,然后 把这个元素传进去,这也是可行

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element 定位frame中的元素

from selenium import webdriver import time def sleep(w=1): time.sleep(w) return 0 # 初始化浏览器信息 driver = webdriver.Chrome() driver.get("http://m.mail.10086.cn") print("------------------------------login in-------------------------------"

定位frame中的元素

场景 处理frame需要用到2个方法,分别是switch_to_frame(name_or_id_or_frame_element)和switch_to_default_content() 如何理解这个switch_to_frame(name_or_id_or_frame_element)方法呢?可以简单记忆一下,如果这个frame有name和id属性那么就用这两个属性就好,如果没有的话可以先用find_element_by_xxx方法找到这个frame元素,然后把这个元素传进去,这也是可行的.

26.定位frame中的元素

场景 处理frame需要用到2个方法,分别是switch_to_frame(name_or_id_or_frame_element)和switch_to_default_content() 如何理解这个switch_to_frame(name_or_id_or_frame_element)方法呢?可以简单记忆一下,如果这个frame有name和id属性那么就用这两个属性就好,如果没有的话可以先用find_element_by_xxx方法找到这个frame元素,然后把这个元素传进去,这也是可行的.

selenium自动化测试入门 定位frame和iframe中的元素对象

< frame> <iframe> 标签,浏览器会在标签中打开一个特定的页面窗口(框架),它在本窗口中嵌套进入一个网页,当用selenium定位页面元素的时候会遇到定位不到frame框架内的元素的问题. 定位frame中的元素前我们需要driver.switch_to.frame()切换到对应的frame中,执行操作后,要操作frame框架外的元素,需要通过driver.switch_to.default_content()切换回主文档页面. driver.switch_to.fr

Webdriver中实现区域截图的方式以及如何截取frame中的图片

import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import org.apache.commons.io.FileUtils;import org.openqa.selenium.OutputType;import org.openqa.selenium.Point;im