NO.014-特殊日期问题 —— by.杭州组
评论
收藏

NO.014-特殊日期问题 —— by.杭州组

经验分享
恐龙
2023-06-08 12:45·浏览量:1517
恐龙
发布于 2023-05-31 15:43更新于 2023-06-08 12:451517浏览

作者:恐龙

关键词:日期时间 元素属性 数据存储


一、问题背景

在影刀学院的基础课程中,教研组的老师们很好的由浅入深地总结了日期时间自动化的相关内容:

https://www.bilibili.com/video/BV1ie4 y1d73n?p=1&vd_source=67010e204bda0923b14478d7a0a3bab7

几乎涵盖了所有的常见的日期选择类型,但在实际的业务场景中,总有一些“不听话”的网页或者软件工具的存在,同时由于业务的需求,有时也会遇到一些特殊时间段选择的情况。这里就简单的收集了我最近遇到的几个特殊日期问题及解决思路

二、案例及其解决方案

案例一:

一个亚马逊的电商客户需要从后台批量抓取某一较长时间段内(连续一个月或好几个月)每天的某些数据进行汇总,日期选择界面如图所示:

图上很明显的一点是月份的显示形式是中文而不是阿拉伯数字,所以确定每次选择的月份是一个需要解决的问题。另外由于完整月和不完整月的原因,每个月选择日期的起始日期和结束日期也不相同。

解决方案:

月份选择的部分先拿到红框内元素的文本,截取出月份文本,使用字典建立形如“八月”:8的中文月份和数字月份的对应关系,通过获取字典键的值来确定当前月份对应的数字,再根据和需要选择月份的大小关系像教程介绍的用循环进行进行左右翻页。

具体月份需要选择的日期范围主要分三种情况。起始月:起始日期至当月最后一天;中间月份:当月第一天到当月最后一天;结束月:当月第一天到结束日期。这里可以在循环中用条件判断来分别确定。


案例二:

这是一个叫做”五星造价”工程造价的软件系统,开工日期的选择比较简单可以直接填写,但是获取编制时间和复核时间时,获取文本内容无法得到当前的时间内容。

解决方案:

尝试获取元素属性“value”,“innerText”等属性,也无法获得,判断可能是元素属性的名字不是常规命名。使用获取元素的全部属性字典,从属性字典中寻找日期值,发现元素的文本内容保存在一个叫“ValueValue”的属性里(QAQ),重新使获取元素属性值指令,获取ValueValue值,成功解决。


案例三:

客户有一个网页日期填写框不能直接填写,又觉的循环加判断的方法太过麻烦,后来确定了这个元素是有readonly属性的,因为这个原因才无法填写,找到方法把readonly去掉就可以直接填写了。

解决方案:

这个当时直接填写不了,我自己当时是没有想到从属性方向尝试的,后来无意中从学习平台找到了修改属性的解决方法。

1. 直接在打开的网页查看源代码,删除元素的这个属性

2. 使用通过js脚本移除readonly属性,达到直接填写日期的效果。

详细操作请见子墨老师的文档

https://www.winrobot360.com/community/detaildiscuss?id=605d852b-c4ab-4208-af22-3155f486238f&tag=&from=userCenter&sort=createTime&page=userCenter

三、思路小结

      总的来说,这些稍微不常规的时间日期问题,往往结合其他方面的基础知识就能有一定的解决思路和可行办法。案例一主要用到了字典的知识来解决数字文字对应问题;案例二、案例三则实际上是元素属性的知识来解决日期获取、和填写设置的问题。所以一些日期的特殊问题,尝试跳出来,把具体的问题迁移到其他方面的知识上,没准会打开思路,有意外收获。

收藏3
全部评论1
最新
发布评论
评论