1
问题描述
打开网页:http://rpachallenge.com,按照左侧要求创建一个工作流,该工作流将从电子表格中输入数据到屏幕上的表单字段中。
注意:
2
问题分析
这个问题首先需要从Excel中读取信息,然后循环将每条记录写入到表单中,并提交。问题的难点每次网页刷新或者提交表单之后,网页中的Label和Input位置信息和元素的Name、ID都会变动,所以要考虑如何准确定位到这些元素,并输入数据。
3
解决方案
既然元素的位置信息和属性都是随机变动的,那么我们可以在Selector中不用这些属性,改为用他们父类的属性,比如parentid、Tag等,同时我们可以发现Label的名称是不变的,所以也可以在Selector中使用aaname这个属性。
综上,我们可以写出如下的Selector:
"
<webctrl aaname='First Name' parentid='randomForm' tag='DIV' />
<webctrl tag='INPUT' />
"
4
代码实现
5
优化
在下载的Excel中,我们可以发现它Header的名称和网页中的Label都是对应的,所以我们可以不用写七个click,也不用写七个Selector,在循环每一行的时候,在里面再放一个For Each,用来循环每一列,并且直接使用col.ToString.Trim来的到列名,然后将它作为变量,放入到Selector中,如下:
"<webctrl aaname='"+col.ToString.Trim+"' parentid='randomForm' tag='DIV' /><webctrl tag='INPUT' />"
6
测试
视频演示
7
代码获取
代码已放在github上,有需要的小伙伴自行下载,顺便点个Star再走:
https://github.com/sombie007/RPA/tree/master/RPAChallenge/DynamicPage