zoukankan      html  css  js  c++  java
  • robotframework + selenium2library 一点测试的经验

    1 对于元素的外层包括frame/iframe标签的。一定要先select  frame name=xxx,然后再操作元素。

    Select frame name=新建个案

    click element  id=  xxxxx

     

    2 对于window.showModalDialog()模式打开的新窗口
    Eg.点击“支付详情”的“详情”,出来一个新页面。如何定位呢?单纯的select window title=payDetail page  是定位不到新窗口的。解决办法如下:

    
    
    
    
    第一句话取的Id就是要点击按钮的Id,已经实验过,网上的经验也说明,直接click element id=xxx 是没有效果的。要用上面的第一句javascript执行点击按钮。
     
    3 对于例子2 新打开的窗口没有title,用url不能定位到,如何解决呢?
    比如:点击“充值退款”出现如图窗口。Select window url=xxxx 根本定位不了。
     

    网上有大神在selenium的源码里添加了几个关键字。这样我们就可以使用了。操作如下:
    D:Python27Libsite-packages
    obotframework_selenium2library-1.1.0-py2.7.eggSelenium2Librarylocators  (根据自身情况而定)
    中的windowmanager.py 增加了方法
     
        def select_by_handle(self, browser, toHandle):
            browser.switch_to_window(toHandle)
     
        def get_window_handles(self, browser):
            return [ window_info[0] for window_info in self._get_window_infos(browser) ]
     
        def get_current_window_handle(self, browser):
            return browser.get_current_window_handle()
     
    D:Python27Libsite-packages
    obotframework_selenium2library-1.1.0-py2.7.eggSelenium2Librarykeywords
    中的_browsermanagement.py 增加如下方法
     
        def select_window_by_handle(self, locator=None):
            self._window_manager.select_by_handle(self._current_browser(), locator)
     
         def get_window_handles(self):
            """Returns and logs handles of all windows known to the browser."""
            return self._log_list(self._window_manager.get_window_handles(self._current_browser()))
     
        def get_current_window_handle(self):
            """Returns and logs handle of current window known to the browser."""
            return self._log_list(self._window_manager.get_current_window_handle(self._current_browser()))
     
    ==============================分割线==================================
    按上述添加上,然后可以使用他新添加的关键字了。
     
    网上大神只写了办法,没有说明他的关键字的使用方法。
    我研究了下用法,实验成功。具体脚本如下。

    
    
    解释
    @{b} get window handles //@{b}变量保存当前所有的窗口。@符号表示这个变量是集合。
    Select window by handle  ${b[1]}//这个是取变量b里面的第二个窗口。(下标从0开始)。
     
    4 特殊下拉框的选择
     
    对于这种下拉框,一拉啥没有。

    
    
    代码中也没有任何可操作的select option标签等。如何是好。
    既然下拉框,那就总可以选择。我们输入一个名“王XX”,下拉框自动出现这样。
    
    

    
    
    但是怎么选择上?代码实在没有相应的元素来操作啊。
    不过,我们操作键盘,向下键,enter键,即可成功选择。
    那问题就变成如何在robotframework+selenium2library中操作键盘。api给的很简单,press key  xxxx。
    查了向下键的ascii为40,enter键的为13.但是久经试验都不对。网上说可以考虑看下selenium的源码中向下键的标识用“ue015”,好奇怪,我也不懂,就用了,果真对了。
    相应脚本:
    
    
     

    有了键盘操作,一系列的特殊下拉框应该没有问题了。
    对于一些不能用ascii码操作键盘的,可以查下selenium的源码,看看源码里对某个键的表示到底是什么。
     
     
    5 对于页面弹个框
    
    
    类似于网页弹出的这样的框。应该更准确的说,是alert(“”)弹出的对话框。

    两步即可:
    
    
     

    6 对于在jenkins上运行出现奇怪错误。
    对于一些测试用例,明明本地和远程robotframework都跑的很顺畅,在jenkins上构建就一直出这样的错误:
    WebDriverException: Message: u'unknown error: Element is not clickable at point (69, 444). Other element would receive the click:
    这种鬼错误,很烦躁。
     
    解决办法:
    Click  element  xxx  换成 execute javascript  document.getElementById('xxx').click()
    基本换成javascript执行,都会轻松通过。如果元素没有ID的话,要用css定位的话,我用的jquery来执行。
    Execute javascript  $(“css”).click()。
     
    7 对于上传下载的操作
    网上有个AutoItLibrary,跟selenium2library类似,可以找下网上的安装方法,网上也有简单例子。本测试过程没有用到,不再详述。
  • 相关阅读:
    2022北航软件研究生入学考试991考试大纲-数据结构与C
    pgsql 学习
    Java开发必须掌握的 20+ 种 Spring 常用注解
    Spring 学习总结
    Spring MVC快速入门教程
    spring boot与spring mvc的区别是什么?
    Java知识体系最强总结(2020版)
    arthas(阿尔萨斯)使用实践----查看慢方法 /方法耗时等
    JVM --------jmap-----查看堆内存信息、生成heap dump 文件(转储堆内存快照到指定文件)
    [JVM】jstat命令详解---JVM的统计监测工具:jstat 堆内存各部分的使用量,以及加载类的数量。
  • 原文地址:https://www.cnblogs.com/star12111/p/7593743.html
Copyright © 2011-2022 走看看