robotframework:运用JavaScript进行定位元素以及页面操作

发布时间 2023-05-05 17:46:04作者: 思佳丽

在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)

设置后的值需要验证是否能正常保存。