Selenium-测试对象操作之:多窗口、内嵌frame

操作策略:通过selenium提供的方法切换后进行操作

窗口切换:switch_to_window()

frame切换:switch_to_frame

窗口切换注意:窗口打开顺序和窗口句柄列表索引的关系

       页面打开顺序:1 2 3

         窗口句柄索引:0 2 1 

多窗口案例:

#coding=utf-8
from selenium import webdriver
import time,os

driver = webdriver.Chrome()
driver.get("https://www.hao123.com/")
driver.maximize_window()
#进入"凤 凰 网",“优酷网”
driver.find_element_by_link_text("凤 凰 网").click()
time.sleep(3)
driver.find_element_by_link_text("优 酷 网").click()
time.sleep(3)
#获取所有窗口的窗口句柄
all_handle=driver.window_handles
print all_handle
#切换到“优酷网”
driver.switch_to_window(all_handle[1])
time.sleep(3)
#在“优酷网”继续操作
driver.find_element_by_link_text("发现").click()

‘‘‘页面打开顺序和窗口句柄列表索引的关系
1 2 3
0 2 1
‘‘‘

内嵌frame案例:

Pyhon代码

#coding=utf-8
from selenium import webdriver
import time
import os
driver = webdriver.Chrome()
file_path =os.path.abspath(‘frame.html‘)
driver.get(file_path)
#先找到到 ifrome1(id = f1)
driver.switch_to_frame("f1")
#再找到其下面的 ifrome2(id =f2)
driver.switch_to_frame("f2")
#下面就可以正常的操作元素了
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()

内嵌frame HTML代码

frame.html

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>frame</title>
</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

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>inner</title>
</head>
<body>
<div class="row-fluid">
<div class="span6 well">
<h3>inner</h3>
<iframe id="f2" src="http://www.baidu.com" width="700" height="400">
</iframe>
</div>
</div>
</body>
</html>

时间: 2024-12-27 16:13:01

Selenium-测试对象操作之:多窗口、内嵌frame的相关文章

Qt 子窗口内嵌到父窗口中(无边框附体show即可)

有时需要把一个子窗口内嵌进入父窗口当中. 我们可以这样做 1.新建一个QWidget 或者QDialog的子类 ClassA(父类为ClassB) 2.在新建类的构造函数中添加设置窗口属性 [cpp] view plaincopyprint? setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint); 关闭默认的窗口标题提示以及没有边框的窗口. 3.在父窗口中调用. [html] view plaincopyprint? Cl

Java Selenium (十二) 操作弹出窗口 &amp; 智能等待页面加载完成 &amp; 处理 Iframe 中的元素

一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然后遍历, 使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口. 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</title> <script type

java selenium (十二) 操作弹出窗口

selenium 中如何处理弹出窗口 阅读目录 原理 在代码里, 通过         Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄,   然后遍历,  使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</ti

Selenium_Python测试对象操作之:table表格

操作内容:获取table总行数.总列数.获取某单元格的text值,删除一行[如果每行后边提供删除的按钮] 案例: HTML代码: <html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></head><body><script type="text/javascript"> f

selenium测试(Java)--多窗口切换(十三)

如果遇到点击按钮或链接后出现新窗口的情况,就需要使用窗口切换的方法. 本例中就是先打开百度搜索界面,然后利用js打开一个百度新闻界面,然后通过selenium提供的窗口切换方法切换窗口 1 package com.test.windows; 2 3 import java.util.Iterator; 4 import java.util.Set; 5 6 import org.openqa.selenium.By; 7 import org.openqa.selenium.Javascript

selenium测试(Java)--关闭窗口(二十)

quit方法:退出相关的驱动程序和关闭所有窗口 close方法:关闭当前窗口 package com.test.closewindow; import java.util.Iterator; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openq

调试一个Ext打开的window窗口内嵌Iframe的form提交问题

一个奇怪的问题是:潜逃在iframe里的页面单独提交都是正常,放到iframe里面通过js调用在parent页面.提交总是被莫名其妙的杀掉. 确定js简单无错之后,继续看parent的处理逻辑,有这么一句.this.destory(). 问题最后才确定了,是打开iframe的页面本身世打开的window窗口,结果能提交submit执行后,直接关闭了打开的窗口. 结果form没有执行开始就被终结了parent,当然iframe的所有执行也都game over了. 毕竟iframe是异步的执行的,想

Android官方ORM数据库Room技术解决方案:@Embedded内嵌对象(二)

Android官方ORM数据库Room技术解决方案:@Embedded内嵌对象(二) (一)附录1简介了Android Room的基本使用.在附录1例子中,User对象元素均为普通的Java基本数据类型,但是实际的开发中,通常建立的持久化存储对象复杂,且通常是结构化的Java对象,互相之间存在引用或者内嵌关系. Android Room支持数据库表Java对象通过注解符@Embedded内嵌一个Java对象.这样就像过去的ORM数据库一样,比如构造一个名为Info的Java对象,作为一个成员变量

ABAP 7.4 新语法-内嵌生命和内表操作

1.内嵌声明 2.内表操作 3.opensql ************************************************************************ 1. 内嵌声明 1)声明符号: DATA(...) 再也不需要建立一堆的临时变量了 2)指针声明符:FILED-SYMBOL(-) *&---------------------------------------------------------------------* 7.40之前-变量 DATA