用户头像

元昌克

2022-08-02

110

UiPath采用Inject Js方式操作只读日历控件 - 知乎

深耕RPA领域的大侠们,好久不见……

小姐姐一直忙于工作,疏忽了平台的更新,但一直有在跟各路大侠以其他的形式分享RPA

我会在这里和大家一起成长,一起分享

 

RPA大侠们,你们在实施项目的过程中是不是有遇到过必须要通过操作日历控件来选择日期的情况?比如类似下面这种:

 

 

 

 

现在你可能面临的情况是:

  1. 必须通过日历控件来选择目标日期;
  2. 目标日期输入框不可写(否则可以通过Type Into的方式直接录入了);

 

做过或没做过此类日历控件的小伙伴们,试想一下你们可能的解决方案是什么呢?

曾经听到的一种解决方案是:

  1. 对待填写的目标日期字符串进行拆分,获取其年、月、日;
  2. 分别计算填写日期与当日的年差和月差,从而实现用鼠标点击的操作完成向前或向后点击多次的情况来达到目标“年月”;
  3. 到达目标年月之后,在日期面板里选择相应的“日”;

 

当然这是一种解决方案,但会有以下弊端:

  1. 在操作日历面板之前,首先需要移动鼠标到日历面板上,否则有可能在操作的时候日历面板直接隐藏导致无法找到目标控件;
  2. 通过点击多次才到达目标日期,并不是一种高效率的方式;
  3. Selector没有设置好的话,很有可能造成下次运行时无法找到动态变化的控件而造成机器人无法运行;

 

今天就跟大家介绍如何采用Inject JS的方式来操作日历控件,小板凳~~~

1. 采用Js代码注入的方式来实现,那么我们需要首先看看网页的源码是怎样的,对吗?

打开目标网页后,按F12键查看源代码,从如下图所示的源代码中,我们可以看到日期控件的name为“XSRQZ”,readonly属性为“readonly”。

 

 

 

大家现在知道为什么这个日期控件不可写了吗?它是完全由html属性readonly来控制的。现在我们需要做的就是采用Js注入的方式disable掉readonly属性。

2. 接下来我们再来看下UiPath Studio中使用Js注入的活动。

打开Activities面板,在搜索框里输入“Inject”,可以看到如下图所示的“Inject Js Script”活动:

将其拖放到中间画布上,Indicate目标日历控件,表示Js脚本将会作用于这个控件,同时指定Js脚本文件的路径。

 

本例中,Js脚本文件就放在项目文件夹下,其内容非常简单,如下所示:

document.getElementsByName("XSRQZ")[0].readOnly= false

 

 

最后我们来看下效果吧!

 

动图封面
 

大家可以看到填写销售日期瞬间完毕,比文章开头讲的解决方案是不是效率提升了很多呢?对于极致追求RPA效率和准确性稳定性的客户爸爸来讲,真真儿是极好的。

⭐⭐⭐欢迎大家踊跃留言⭐⭐⭐



文章来源:https://zhuanlan.zhihu.com/p/94027459

声明:本文通过RPA之家机器人自动转载,如有侵权请联系service@rpazj.com删除

1条评论

用户头像
提交评论
王晓波: RPA之家(www.rpazj.com)—中国最大的RPA服务平台。提供RPA培训、咨询、实施、机器人定制购买、技术交流、求职招聘、外包兼职等专业服务。业务咨询请加微信18925203701交流。
回复 2023-01-05
RPA之家banner图