robotframework:运用JavaScript进行定位元素以及页面操作
在ui自动化时,有些特殊情况需要用到js操作,在进行js操作前要先进行js元素定位。
一.js元素定位
1.id定位
document.getElementById("id")
2.name定位
document.getElementsByName("name")
3.class定位
document.getElementsByClassName("class")
4.tag定位
document.getElementsByTagName("tag")
5.css定位
document.querySelectorAll("css selector")
6.xpath定位
document.evaluate("${element}",document).iterateNext()
${element}为xpath元素定位的内容。
二.验证js元素定位的正确性
fn+F12,选择console控制台。
在console控制台输入js元素定位,回车键后没有报错并且在下方展示元素定位。
三.js操作页面元素
进行js操作时,js操作前需要先写明方法表示是js操作。例如:robotframework使用的是execute javascript关键字,Java使用的是executeScript()方法。
1.js点击:加.click()
元素可能被定位到,但是无法通过click点击。是由于点击事件被父元素消耗。
document.evaluate("${element}",document).iterateNext().click()
2.js双击
${element}.click(); #点击事件
var clickEvent=document.createEvent('MouseEvents'); #创建clickEvent对象实例
clickEvent.initEvent('dblclick',true,true); #初始化事件,双击。事件类型,是否冒泡,是否阻止浏览器的默认行为
${element}.dispatchEvent(clickEvent) #触发事件
3.js输入
当有些控件要输入但是标签不是input时,点击不可直接输入,例如时间控件,属性中含有readonly。这时就需要用js先进行属性删除,然后再输入内容。
document.evaluate("${element}",document).iterateNext().removeAttribute('readonly') #去除readonly属性才可以输入
去除readonly属性后,如果input无法输入,可以使用fill text关键字或者键盘输入。
4.js设置值
当遇到时间控件不可以直接输入时,也可以尝试通过给元素设置值来实现输入。
document.evaluate('${element}',document).iterateNext().click();
var clickEvent=document.createEvent('HTMLEvents');
clickEvent.initEvent('change',true,true); #初始化事件,change事件
document.evaluate('${element}',document).iterateNext().dispatchEvent(clickEvent)
设置后的值需要验证是否能正常保存。
robotframework:运用JavaScript进行定位元素以及页面操作的更多相关文章
- JavaScript打开窗口与关闭页面操作大全
JavaScript新开窗口 onClick="javascript:window.location='http://www.sowsoy.com'" JavaScript新开一个 ...
- JavaScript HTML DOM元素节点常用操作接口
在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType :节点的类 ...
- javascript获取iframe框架中页面document对象,获取子页面里面的内容,iframe获取父页面的元素,
javascript获取iframe框架中,加载的页面document对象 因为浏览器安全限制,对跨域访问的页面,其document对象无法读取.设置属性 function getDocument(i ...
- Javascript动态加载Html元素到页面Dom文档结构时执行顺序的不同
我们有时会通过ajax动态获取一段Html代码,并且将这段代码通过javascript放到页面的Dom结构中去. 而很多时候通过ajax动态获取的Html代码中也包含javascript代码,有一点需 ...
- selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)
1.问题发生描述: 从一个页面进行点击等操作,页面跳转到第二个页面,对第二个页面中的元素,采取任何措施定位都报错,问题报错点如下: 2.出现问题的原因: 窗口句柄还停留在上一个页面,对于当前新弹出的页 ...
- 每天一个JavaScript实例-操作元素定位元素
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 解决Selenium弹出新页面无法定位元素问题(Unable to locate element)
Python 2.7 IDE Pycharm 5.0.3 环境细节详见Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录 对于同一页面无法定位元素问题请见姊妹篇解 ...
- Appium Inspector定位Webview/H5页面元素
目录 操作步骤 Python操作该混合App代码 Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 翻墙 + 使用Chrome://ins ...
- APP端有原生态的控件,但嵌入了H5页面,怎么定位到H5页面的元素
appium 通常有很多种定位元素方法,例如xpath,driver.find_element_by_accessibility_id等,安卓sdk自带的uiautomatorviewer但是对于H5 ...
- 获取页面定位元素left top
1原生方法: 第一种方法,比较简单,就是直接通过obj.style.left和obj.style.top,但是有局限性,这种获取的方法只能获取到行内样式的left和top的属性值,不能获取到style ...
随机推荐
- Solon Cloud Gateway 开发:导引
Solon Cloud Gateway 是 Solon Cloud 体系提供的分布式网关实现(轻量级实现). 分布式网关的特点(相对于本地网关): 提供服务路由能力 提供各种拦截支持 1.分布式网关推 ...
- 一种面向混合云平台基于LSTM预测模型的资源池配额方法。
本文分享自天翼云开发者社区<一种面向混合云平台基于LSTM预测模型的资源池配额方法.>,作者:l****n 基于用户的历史配额申请情况和实际资源使用情况组成数据集搭建LSTM时序预测模型. ...
- Linux网络优化踩坑net.ipv4.tcp_tw_recycle
一.背景 来源于埋点上报服务,埋点上报服务是用户打开APP后点击.浏览.曝光等数据都会上报到埋点服务,收集数据后用来公司运营. 本次踩坑来源于监控到上课高峰期net.sockets.tcp.timew ...
- 一个SQL就让内存耗光了
一个SQL内存为什么就没了呢 最近遇到一个故障,研发新上线一个功能,成功把主机内存耗光,导致实例重启.复现一个SQL如何把数据库的内存耗光. 实验环境 Oracle Database 19c(故障发生 ...
- Docker 持续集成部署+ELK日志相关等 完美实践
docker(ubuntu) 卸载docker # 卸载(如有) for pkg in docker.io docker-doc docker-compose docker-compose-v2 po ...
- es5经典数组去重
es5经典数组去重 for (var i = 0; i < arr.length; i++) { for (var j = 1; j < arr.length; j++) { if (ar ...
- 洋葱学园:开启高效学习之旅的宝藏 APP 40天会员5元到手价
洋葱学园是一款在在线教育领域表现出色的教学 APP ,下面为您详细介绍它的特点以及推荐理由. 丰富的学科覆盖: 洋葱学园涵盖了从小学到高中的全学科课程,包括数学.语文.英语.物理.化学等.无论您处于哪 ...
- 大数据之路Week08_day03 (Hive的动态分区和分桶)
一.动态分区 先来说说我对动态分区的理解与一些感受吧. 由于我们通过hive去查询数据的时候,实际还是查询HDFS上的数据,一旦一个目录下有很多文件呢?而我们去查找的数据也没有那么多,全盘扫描就会浪费 ...
- C#中的StreamWriter和"谁创建谁释放"原则
C# 类库中的 StreamWriter 类在释放时会同时关闭其所依赖的基础流对象,这是为了确保所有缓冲数据都被写入基础流中,并且在不再需要 StreamWriter 对象时,基础流对象也能够被及时释 ...
- EAR_v3 《浮声三》 智能化图书管理系统
EAR_v3 <浮声三> 搭建于 Actix_Web 框架下的智能化图书管理系统 本项目的前身是 <Rusty_Borders 危墙> 的 在线控制系统 部分,经过大量开发工作 ...