• 关于RF对于不在屏幕内的页面元素的处理办法


    1、碰到的问题:

    最近在公司用Robot framework+Selenium2Library做项目,碰到部分页面比较长,无法完全显示在屏幕内,需要上下滚动滚动条才能看到下半部分的页面元素。于是呼,问题就来了,当我操作未在屏幕内的”继续”按钮(实际是一个超链接)时,案例失败,提示:

    ElementNotVisibleException: Message: u'Cannot click on element'。

    HTML代码:

    <A id=submitButton title=继续href="javascript:void(0)" >继续>继续</A>

    2、解决过程:

    a)  起初我以为RF不能识别不在屏幕内的页面元素,咨询同事说可以处理,于是自己又开始研究,发现RF确实可以识别不在幕内的页面元素(比如输入框)。通过先对输入框进行赋值操作后,由于屏幕自己下拉继续按钮已经显示在屏幕内了,于是问题看上去似乎解决了。

    b)  然而,好景不长,另一个页面出现了同样的问题而且只有一个继续按钮不在屏幕内(无法使用a中先操作其它元素的办法解决),当案例执行到这一步时我手工把页面下拉使按钮显示出来,这时就不会有问题,于是我断定点击按钮操作时屏幕没有下拉,而RF操作时又必须要元素显示在屏幕内。随即我又开始研究Selenium2Library库,一个一个的看S2L库的关键字,发现了Foucs关键字,于是抱着试一试的心理在点击继续按钮前加上了这个Foucs关键字使焦点定位到按钮上,当执行到这一步时继续按钮出现在屏幕上,问题随之彻底解决,很是开心啊!!!

    3、总结:

    a)   首先,RF对于不在屏幕内的页面元素是可以识别的,RF定位到不在屏幕内的对象会自行下移屏幕。但是对于点击按钮操作,RF没有自行下移屏幕,所以无法进行操作,要想办法使元素能在屏幕中显示出来,focus关键字就很有用处了,因为它要定位焦点,而且会把屏幕下拉,这样一来不在屏幕内的元素就可以显示进行操作了。

    b)  Execute Javascript 关键字: 这是S2L库中的一个关键字,可以用来执行JS脚本,我觉得这也可以解决上述问题,有时间在研究研究。

  • 相关阅读:
    C++指针笔记
    破解入门【OllyDebug爆破程序】
    c++类的定义《一》
    数组
    while循环语句的使用
    MS10-046漏洞测试
    For循环语句的使用
    C++Builder编写计算器
    C++自定义函数
    SQLyog简介
  • 原文地址:https://www.cnblogs.com/puresoul/p/3394589.html
Copyright © 2020-2023  润新知