LuckyFrame添加显式等待关键字

背景

在LuckyFrame当前的版本中,仅有timeout隐式等待和Wait强制等待。在实际的用例编写过程中,需要等待元素显示或者元素消失时(如等待loading浮层消失),不够方便灵活,很容易出现等待时间不够或者浪费时间的情况,所以添加一个自定义的显示等待关键字。
在这里插入图片描述

代码实现

可在LukcyFrameClient项目的 EncapsulateOperation类-》objectOperation方法的switch下添加显示等待关键字代码。
在这里插入图片描述

case "waitvisibility":
                // 显式等待元素可见
                WebDriverWait wait1=new WebDriverWait(wd,Long.parseLong(operationValue));
                switch (property) {
                    case "id":
                        wait1.until(ExpectedConditions.visibilityOfElementLocated(By.id(propertyValue)));
                        break;
                    case "name":
                        wait1.until(ExpectedConditions.visibilityOfElementLocated(By.name(propertyValue)));
                        break;
                    case "xpath":
                        wait1.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(propertyValue)));
                        break;
                    case "linktext":
                        wait1.until(ExpectedConditions.visibilityOfElementLocated(By.linkText(propertyValue)));
                        break;
                    case "tagname":
                        wait1.until(ExpectedConditions.visibilityOfElementLocated(By.tagName(propertyValue)));
                        break;
                    case "cssselector":
                        wait1.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(propertyValue)));
                        break;
                    default:
                        break;
                }
                break;
case "waitnotvisibility":
                // 显式等待元素消失
                WebDriverWait wait4=new WebDriverWait(wd,Long.parseLong(operationValue));
                switch (property) {
                    case "id":
                        wait4.until(ExpectedConditions.not(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.id(propertyValue))));
                        break;
                    case "name":
                        wait4.until(ExpectedConditions.not(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.name(propertyValue))));
                        break;
                    case "xpath":
                        wait4.until(ExpectedConditions.not(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(propertyValue))));
                        break;
                    case "linktext":
                        wait4.until(ExpectedConditions.not(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.linkText(propertyValue))));
                        break;
                    case "tagname":
                        wait4.until(ExpectedConditions.not(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.tagName(propertyValue))));
                        break;
                    case "cssselector":
                        wait4.until(ExpectedConditions.not(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector(propertyValue))));
                        break;
                    default:
                        break;
                }
                break;

数据库插入关键字

INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('3044', '51', 'waitvisibility显式等待元素可见', 'waitvisibility', 'testmanagmt_casestep_uioperation', '', 'info', 'Y', '0', 'admin', '2019-02-13 10:27:32', 'luckyframe', '2019-02-13 10:27:32', '显式等待元素可见');
INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('3045', '52', 'waitnotvisibility显式等待元素消失', 'waitnotvisibility', 'testmanagmt_casestep_uioperation', '', 'info', 'Y', '0', 'admin', '2019-02-13 10:27:32', 'luckyframe', '2019-02-13 10:27:32', '显式等待元素消失');

替换class文件

将EncapsulateOperation.java文件重新编译后,替换到LuckyFrameClient对应的目录,重启客户端即可。

使用

在这里插入图片描述

另:
在使用该框架的过程中的一些痛点,比如同一套用例无法在多个环境执行,多个计划无法聚合到一个调度任务里统一执行,一些实用的自定义关键字等都已实现。待有时间再写上来吧。

感谢

附上luckyframe项目官网的地址 http://www.luckyframe.cn,感谢作者开发这么好用的自动化平台,强力推荐!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值