博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium-Webdriver系列Python版教程(5)————如何定位 frame
阅读量:5821 次
发布时间:2019-06-18

本文共 1512 字,大约阅读时间需要 5 分钟。

hot3.png

在 web ui 自动化测试中,frame 一直是令人头痛的问题,就像上班必须挤公车坐地铁一般,

frame 的问题总是令人气闷纠结为之黯然神伤。

以前在使用 Selenium1 的时候,frame 也是颇为棘手的一个问题。不但要照本宣科的进行

一系列的设置,而且在进行实际代码编写的过程中会遇到各种奇奇怪怪的问题。 frame 就像

中国男足的后防线,问题多多难以解决。

selenium webdriver 处理 frame 比较简单,这点比某些测试工具要先进一些,令人身心愉

悦。

以下面的 html 代码为例,我们看一下如何定位 frame 上的元素。

frame.html

<html>

<head>
<title>frame</title>

</head>

<body>

<div class="row-fluid">
<div class="span10 well">
<h3>frame</h3>
<iframe id="f1" src=" part1 .html" width="800",
height="600"></iframe>
</div>
</div>
</body>

</html>

part1.htm

<html>

<head>
<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="500"></iframe>
</div>
</div>
</body>

</html>

switch_to 方法会 new1个 TargetLocator 对象,使用该对象的 frame 方法可以将当前识别

的”主体”移动到需要定位的 frame 上去。

from selenium import webdriver

import os,time

objDriver = webdriver.Chrome ()

#相对路径(与Python文件在同一个目录下)

frame_file = 'file://"+ os.getcwd()  + '/frame.html'))

objDriver.get(file_path)

objDriver.implicitly_wait(30)

#先找到到ifrome1(id = f1)

objDriver.switch_to_frame("f1")

#再找到其下面的ifrome2(id =f2)

objDriver.switch_to_frame("f2")

#操作f2中的控件

objDriver.find_element_by_id("kw").send_keys("selenium")

time.sleep(5)

objDriver.quit()

webdriver 的 frame 处理方式让人感觉那个不痛越来越轻松,这点进步值得肯定。

备注:

browser.implicitly_wait()的用法应该比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。

 

driver.switch_to_window()的用法与switch_to_frame 相同,只是switch_to_window()不是对嵌套的框架定位,而是窗口的定位。

转载于:https://my.oschina.net/zhangzhe/blog/415144

你可能感兴趣的文章
zoj 2412 dfs 求连通分量的个数
查看>>
Java设计模式
查看>>
一文读懂 AOP | 你想要的最全面 AOP 方法探讨
查看>>
Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
查看>>
ORM数据库框架 SQLite 常用数据库框架比较 MD
查看>>
华为OJ 名字美丽度
查看>>
微信公众号与APP微信第三方登录账号打通
查看>>
onchange()事件的应用
查看>>
Windows 下最佳的 C++ 开发的 IDE 是什么?
查看>>
软件工程师成长为架构师必备的十项技能
查看>>
python 异常
查看>>
百度账号注销
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
BIEE Demo(RPD创建 + 分析 +仪表盘 )
查看>>
Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
查看>>
基本概念复习
查看>>
重构第10天:提取方法(Extract Method)
查看>>
Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
查看>>
解决pycharm在ubuntu下搜狗输入法一直固定在左下角的问题
查看>>
多线程day01
查看>>