UI自动化注意事项

1、元素查找

  1. 结果集数据处理考虑多个数据的结果集以及结果集为空的情况。
    在页面查找动作中,我们进程会去根据条件查找我们需要的数据,这个时候我们需要考虑返回
    结果中有多条数据或者结果为空的情况,在程序中,需要对这两种情况加以处理,增强程序的稳定性以及可靠性。

  1. 动态加载数据情况。
    有很多数据的加载都是动态的,比如下拉框,可能是在点击下拉后页面从后台请求数据填充到页
    面显示,而对于页面请求和渲染数据而言,CPU执行指令是很快的,这个时候,我们需要让
    findElement方法等待(sleep)一会,这样找到数据才靠谱。

  1. 弹出页面以及页面切换
    这个是动态加载数据的一个外延表现形式。打开新的页面,或者弹出页
    面,对于浏览器是需要一小段时间的,但是,代码已经跳到下一条了。下一条代码执行完页面加载可
    能还没有完成,这样,我们就可能看到can not find element这种问题了,和动态加载数据类似,
    sleep是一个不错的规避方案。

 

2、操作元素

  1. sendkeys发送数据是不靠谱的。
    在测试中发现,很多时候发送的数据在页面显示不对,可能浏览器只接受到一个字符或者根
    本没收到,这个时候我们无法达到自己想要的效果。推荐一个解决方法:发送后去检查输入框的值是
    否是输入的值,不是的话重新发送。附上代码:

 

public static void sendKeys(WebElement ele, String val) throws InterruptedException{
        ele.clear();
        while (true){
            ele.sendKeys(val);
            Thread.sleep(1000);
            if(ele.getAttribute("value").equals(val)){
                break;
            }else{
                ele.clear();
                Thread.currentThread();
                Thread.sleep(1000);
            }
        }

    }
  1. 点击
    点击有时候也是不靠谱的,利用find之后的对象直接调用click,可能会发现点击的不是找到的元素,而是另一个,这可能是因为元素重叠(overlap)在一起了,这个时候使用Actions类直接moveToElement是一个可行的方案。

  1. 不在窗口显示元素的操作
    如果元素不在当前窗口可见,需要先操作滚动条使得元素可见才能进行操作。操作滚动条的方法可以使用js相关的方法。这里推荐一种对非window类型滚动条操作的方法:

 

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();" ,element);

可以移动到对应元素处。
4. 其它
很多元素的操作是可以检查的,在有必要的时候可以先检查元素是否可以进行对应的操作,比如 是否可输入,是否可点击之类的。

对元素的操作需要确认 **1、元素存在 2、肉眼可见 3、定位准确 4、循环校验**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值