webdriver(python)学习笔记七——多层框架定位与智能等待

多层框架或窗口定位:

  • switch_to_frame()
  • switch_to_window()

智能等待:

  • implicitly_wait()

现在web应用中经常会遇到框架如(frame)或窗口(windows)的应用,这样定位就比较难,有时定位一个元素,定位器没有问题,但是就是定位不到,这时就需要检查一下这个元素是否存在在一个frame中。

webdriver中switch_to_frame()就可以解决这个问题。

代码1(frame.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="innerhtml" 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>

代码2(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="500"></iframe>
<a href="javascript:alert('watir-webdriver better than
selenium webdriver;')">click</a>
</div>
</div>
</body>
</html>


frame中嵌套inner,两个脚本放在同一个目录下。

代码如下:

#coding=utf-8
from selenium import webdriver
from time import sleep
import os
br= webdriver.Firefox() file_path = 'file:///' + os.path.abspath('frame.html') br.get(file_path)br.implicitly_wait(30)
#先找到到iframe1(id = f1) br.switch_to_frame("f1")
#再找到其下面的iframe2(id =f2) br.switch_to_frame("f2")#下面就可以正常的操作元素了 br.find_element_by_id("kw").send_keys("selenium") br.find_element_by_id("su").click() sleep(1)br.quit()


按上面方式就可以定位到元素


switch_to_window()

 

有可能嵌套的不是框架,而是窗口,对窗口的方法:switch_to_window(),用法与switch_to_frame 相同:dr.switch_to_window("windowName")

 

br.implicitly_wait(30)

它可以在一个时间范围内智能的等待。而slepp(2)是一个固定的时间。

文档解释:

selenium.webdriver.remote.webdriver.implicitly_wait(time_to_wait)

隐式地等待一个无素被发现或一个命令完成;这个方法每次会话只需要调用一次

time_to_wait: 等待时间

 

用法:driver.implicitly_wait(30)

 

 

 

转载于:https://www.cnblogs.com/kongzhongqijing/p/3534197.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bbp代码python_如何正确计算加密债券价格的BBP(Bollinger波段百分比)?

我试图用这个代码计算python中的BBP(Bollinger频带百分比)。然而&#xff0c;我的^{cd1>}函数返回^{{cd2>}或^{cd3>}用于^{cd4>}。当我使用一些硬币收盘价时&#xff0c;令人困惑的是&#xff0c;这个函数返回正确的^{cd4>}数字(而不是inf)。这是我的python代码…

ASP.NET学习路线图

转自&#xff1a;http://www.cnblogs.com/huangmeimujin/archive/2011/08/08/2131242.html 如果你已经有较多的面向对象开发经验&#xff0c;跳过以下这两步&#xff1a; 第一步 掌握一门.NET面向对象语言&#xff0c;C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的…

centos 多个mysql数据库_CentOS6.5 一台服务器同时安装多个Mysql数据库

建用户与组groupadd mysqluseradd -g mysql mysql下载源码&#xff1a;wget https://downloads.mariadb.org/interstitial/mariadb-10.1.10/source/mariadb-10.1.10.tar.gztar -xvf mariadb-10.1.10.tar.gz1、编译&#xff1a;cmake . -DCMAKE_INSTALL_PREFIX/var/lib/mysql33…

MVC3学习 一 ViewBag和Html.Raw

ViewBag类似于JavaScript的语法&#xff0c;在赋值时动态赋值&#xff0c;比如ViewBag.Dog“哈哈” &#xff0c;这样就会创建一个ViewBag.Dog的对象&#xff0c;供前端页面调用。 在调用时&#xff0c;前台页面用razor方式&#xff0c;ViewBag 直接使用。 public class HomeCo…

PHPCMS源码分析(二)

index.php中引入了phpcms框架的入口文件&#xff0c;下面我们看下这个入口文件 /phpcms/base.php define(IN_PHPCMS, true);//防止恶意调用//PHPCMS框架路径 define(PC_PATH, dirname(__FILE__).DIRECTORY_SEPARATOR); //重新定义网站根目录 if(!defined(PHPCMS_PATH)…

mysql 5.6密钥_MySQL的密钥文件不正确

我遇到了InnoDB的问题(表是最初的MyISAM,但是之前将它转换为InndoB)表;我正在尝试运行此查询&#xff1a;SELECTposts.id,posts.post_titleFROMrss_posts AS postsINNER JOIN rss_feeds AS feeds ON posts.blog_idfeeds.idWHEREfeeds.blog_language1ORDER BYposts.post_date_db…

JS-取出字符串中重复次数最多的字符并输出

/**取出字符串中重复字数最多的字符 */ var words sdfghjkfastgbyhnvdstyaujskgfdfhlaa;      //创建字符串 var word,                          //单个字符length;                          //该字符的长度 //…

windows下查看静态库和动态库的导出函数

在window下查看动态库的导出函数可以用vs自带的Depends工具&#xff1b; 查看静态库的信息要用命令行来实现&#xff1a; dumpbin /LINKERMEMBER Test.lib > 1.txt 上面的功能是将静态库的信息导出保存在1.txt文件中&#xff0c;这样就可以在1.txt文件中查看相关的信…

linux ll 文件大小单位_该如何改善 Linux 系统性能?

系统性能一直是一个受关注的话题&#xff0c;如何通过最简单的设置来实现最有效的性能调优&#xff0c;如何在有限资源的条件下保证程序的运作&#xff0c;ulimit 是我们在处理这些问题时&#xff0c;经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能&#xff0c;它…

深入Javascript中apply、call、bind

最近在看一下node package的源码&#xff0c;发现很多里面都包含了function这个对象的apply、call、bind这三个方法&#xff0c;于是想拿出来再看看。。 apply、call 在 javascript 中&#xff0c;call 和 apply 都是为了改变某个函数运行时的上下文&#xff08;context&#x…

优秀案例!教您如何设计现代简约风格网页

我们看到越来越多的设计师开始拥抱简约的网站设计方法&#xff0c;消除网站不必要的元素&#xff0c;保留真正重要的内容&#xff0c;干净、直观的设计&#xff0c;就像今天的我们将展示的这些网站。 下面是一组不同风格的简约设计的网站例子&#xff0c;美丽的导航、整洁的菜单…

怎么清理mysql的死链接_什么是死链接?如何正确处理死链接

什么是死链接&#xff1f;我们应该如何正确处理死链接呢&#xff1f;小刚SEO为你解答。什么是死链接&#xff1f;因链接更改或搜索引擎所收录的网站路径被删除了&#xff0c;形成没法打开的死链接。死链接的危害&#xff1a;1.死链数据过多时&#xff0c;对网站访问体验和用户转…

数据分页和使用存储过程的数据分页

--使用存储过程的数据分页 --pageSize 一页有多少条 --pageIndex 第几页 --totalCount 总共有多少条 --分页的第一种方法 select top(10) * from Ams_Area where ar_id not in ( Select top(0) ar_id from Ams_Area order by ar_id ) order by ar_id --分页的第二种方…

mysql generaton_Mysql 集成随机唯一id mysql unique number generation

一句代码&#xff1a;SELECT FLOOR(10000 RAND() * 89999) AS random_numberFROM table1WHERE "random_number" NOT IN (SELECT unique_id FROM table2)LIMIT 1随机生成5位数字&#xff0c;并且不重复。上面的代码真是给人无限的联想力。例如&#xff1a;function g…

NavMeshAgent 动态加载障碍物

如果你想让游戏人物绕开一些物体, 这些物体动态生成出来的.只需要给物体添加NavMeshObstacle组件即可 1. 绿色方块添加NavMeshObstacle组件 2. 红色方块没有添加NavMeshObstacle组件,被小球穿透了%>_<% 转载于:https://www.cnblogs.com/plateFace/p/4385629.html

多任务 schedule python_Python3.6 Schedule 模块定时任务 (实例讲解)

Python3.6 Schedule 模块定时任务 (实例讲解)Python 是一种面向对象解释型计算机程序设计语言, 由 Guido van Rossum 于 1989 年底发明, 第一个公开发行版发行于 1991 年 Python 语法简洁而清晰, 具有丰富和强大的类库它常被昵称为胶水语言, 它能够把用其他语言制作的各种模块 …

UVa 11468 (AC自动机 概率DP) Substring

将K个模板串构成一个AC自动机&#xff0c;那些能匹配到的单词节点都称之为禁止节点。 然后问题就变成了在Tire树上走L步且不经过禁止节点的概率。 根据全概率公式用记忆化搜索求解。 1 #include <cstdio>2 #include <cstring>3 #include <queue>4 using name…

mysql 检查点_my05_mysql检查点简述

简单描述一下mysql 检查点&#xff0c;对mysql数据库恢复的理解有所帮助。数据库版本mysql> selectversion();-----------| version() |-----------| 8.0.11 |-----------1 row in set (0.00 sec)检查点查看mysql>show engine innodb status\G;---LOG---Log sequence num…

VS2010无法执行自动化测试解决方案

在实际的工作过程中&#xff0c;当你发现你的VS2010无法执行自动化测试用例&#xff0c;刚好你发现你的电脑安装有VS2012&#xff0c;那么好了&#xff0c;请卸载你的VS2012再试试...转载于:https://www.cnblogs.com/captainR/p/3566751.html

停止Hadoop或HBase集群的脚本

#!/bin/sh #echo "waring" #read NAME #等待用户输入并把输入的值付给NAME NAME$1 #将脚本第一个参数赋给NAME #引用变量时加上"{}",是个好习惯,利于shell辨别变量边界 if [ -z ${NAME} ] ; then #执行脚本没有输入参数,默认关闭hadoopstop-all.sh elif [ …