关于iframe定位碰到的问题。
这几天在做自动化测试的时候发现一个问题,用JQUERY定位时,总是报错,MES:JQUERY IS NOT DEFINED。
检查自己定位没有问题,后来想是不是语法出了问题。
切换成XPATH来定位,还是报错。
然后再语法调试,发现NAME属性不能定位,不具有唯一性,有三个NAME值一样的IFRAME。
当时具体情况是:IFRAME有三个属性,NAME,SRC,CLASS。三个IFRAME除了SRC值不一样外,其它两个属性的值都一样。
所以只能通过SRC值来区分IFRAME了。
最后解决是通过:dom=document.querySelector("[src='.....']") 这个语法定位成功了。
通过这个事情,我联想到,在做自动化测试的时候,定位是一个困难点,我习惯用JQUERY来定位,因为我是用RF框架做自动化的。
而定位碰到困难时,很大一部分是有FRAME,IFRAME存在,特别是多层嵌套的IFRME。
当发现定位失败时,第一步:先调试语法,如果确信定位语法没有问题,就考虑第二步。
第二步:检查IFRAME是否存在,存在几个(可能谷歌浏览器开发者工具最下面一栏查看到IFRAME的个数及位置),如果存在IFRAME,就先定位IFRAME。一般通过IFRAME的NAME,ID来定位IFRAME。
大部份的IFRAME能通过NAME,ID定位出来。(如果没有NAME,ID,就参考另一篇博客,自已赋值一个ID),如果存在多个IFRAME,就一个一个的往里定位,直到定位到我们需要定位元素的那一层。
第三步:如果不存在IFRAME,就检查是否切换了窗口。如果切换了窗口,就切换到我们需要定位元素的那个窗口,然后就可以正常定位元素 了。
具体情况还需要自己在做项目的时候,多总结,多练习。我这里只是提供一个思路。
关于iframe定位碰到的问题。的更多相关文章
- selenium iframe 定位 qq空间说说
selenium iframe 定位 qq空间说说
- 自动化测试selenium(三) 由于iframe 定位不到元素
iframe原因定位不到元素 现在的项目后台基本都是上左右结构,要出现这个结构效果,需要使用到了iframe标签: 我们先说说iframe在java中使用的方法: driver.switchTo(). ...
- selenium+java iframe定位
关于 driver.switchTo().frame(参数).这中间的参数表达有以下几种方式. driver.switchTo().frame(0):用<iframe>标签的位置数量来 ...
- Selenium2学习(十)-- iframe定位
前言 有很多小伙伴在拿163作为登录案例的时候,发现不管怎么定位都无法定位到,到底是什么鬼呢,本篇详细介绍iframe相关的切换 以http://mail.163.com/登录页面10为案例,详细介绍 ...
- Python+Selenium - iframe定位
元素在iframe中.在html当中,内嵌了另一个html (iframe) 分辨元素是否在iframe当中 在代码当中,从当前的html切换到iframe当中的html,然后在元素定位 切换方式:d ...
- iframe定位获取
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python+selenium四:iframe查看、定位、切换
iframe是HTML里面嵌套HTML的一种框架 1.查看iframe 1.Top Window:可直接定位 2.iframe#i:说明此元素在iframe上 3.iframe显示为空:(id或nam ...
- python+selenium实现163邮箱登陆—iframe动态ID定位 及常用定位方法
今天发现之前的登录163邮箱脚本定位不到iframe了,原因是iframe拼接了动态ID,修改后的脚本如下: from selenium import webdriver driver = webdr ...
- Selenium踩坑记之iFrame的定位与切换
转自:https://www.jianshu.com/p/6e7d0359e4bb Selenium是浏览器自动化测试的工具之一,用过的人都懂他的好,也被他坑的不要不要的.今天就聊聊Selenium的 ...
随机推荐
- MySQL if,ifnull,nullif 函数
一.IF IF(exPR1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr ...
- c/c++ int 范围的原因
在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用 ...
- C++——智能指针
动态内存管理:new-delete——很难正确释放内存——智能指针 使用场景: 1.程序不知道自己要使用多少对象 2.程序不知道自己所需对象的准确类型 3.程序需要在多个对象之间共享数据 4.坚持只使 ...
- upc组队赛5 Hunter’s Apprentice 【判断多边形边界曲线顺逆时针】
Hunter's Apprentice 题目描述 When you were five years old, you watched in horror as a spiked devil murde ...
- Safari的CSS HACK方法
以前的文章里提到过IE6/IE7/IE8/IE9/.Firefox的CSS HACK方法,那么Safari的CSS HACK是什么呢? 请看以下CSS代码: .box { color: black ...
- Linux折腾
安装了一圈发行版,最后发现还是Fedora最稳定 debian安装后无法启动 openSUSE源不完善 manjaro重启就进不去
- 利用docker搭建WordPress
步骤一 创建mysql的容器 步骤二 创建wordpress的容器并链接mysql容器的数据库 创建mysql的容器 docker run -d --name mysql -v mysql-data: ...
- Oracle日志查看
一.Oracle日志的路径: 登录:sqlplus "/as sysdba" 查看路径:SQL> select * from v$logfile; SQL> selec ...
- Python面试题之“猴子补丁”(monkey patching)指的是什么?这种做法好吗?
“猴子补丁”就是指,在函数或对象已经定义之后,再去改变它们的行为. 举个例子: import datetime datetime.datetime.now = lambda: datetime.dat ...
- Error (10170): Verilog HDL syntax error at passwd.v(21) near text "if"; expecting an identifier ("if" is a reserved keyword ), or "endmodule", or a parallel statement
你得加上时序啊笨蛋