第六讲:网页元素的定位

显示内容

第六讲:网页元素的定位

友情提示:点击文章下方的阅读原文即可观看视频课程,视频课程中包含大量实操案例,可以跟着边学边练,同时视频课程也会给大家提供线上答疑服务,帮助大家更快掌握RPA,实现办公自动化。

通过前面几节课的学习,相信大家已经初步掌握如何使用 RPA 来自动完成一些简单的重复性工作了。

         其实大家可以仔细想一想,RPA 在处理一些基于网页的重复性工作时,整体工作流程无非就是打开某个网页,然后根据我们事先手动捕获到的某个元素,来定位到该元素,接下来呢,要么就是获取该元素的信息并基于这些信息进行一些后续的处理,要么就是直接对这个元素进行一些操作,然后循环往复,直至工作完成。          因此呢,我们也不难看出,元素的定位对于 RPA 整个工作流程的推进是至关重要的,因为只有先定位到某个元素之后,它才能进行后续的一系列操作。          而关于元素的定位,通过前面一些课程的讲解,相信大家已经有了初步的了解,我们手动捕获某个元素的过程,本质上是给 RPA 描述找到该元素的规则路径,只不过这个规则路径是由 RPA 自动生成的,也就是元素编辑里面所包含的内容,之后,RPA运行的过程中,就会根据这个规则路径找到该元素。          因此,一般情况下,我们只需要事先捕获好某个要操作的元素,并在指令中将其设置为操作目标,之后, RPA 在运行的过程中就可以自动的定位到该元素了。          不过,在实际的工作场景中,情况可能会更复杂一些,这是因为,有些时候我们所捕获的元素,其内容是会动态变化的。          举个例子,比如现在我们打开去哪儿网,然后抓取取一下上面一些酒店的点评数,那么,我们就可以先捕获一下某一家酒店的点评数这个元素,然后调用一下获取元素信息指令,并在指令中将操作目标设置为我们捕获到的这个点评数元素,之后,RPA 在运行的过程中,就能自动定位到该元素并获取到该元素的文本内容了,也就是这家酒店的点评数。          但是,这里其实有一个问题,实际上,每家酒店的点评数基本上都是不同的,甚至对于同一家酒店,不同时间的评论数可能也是不同的,因此,对于我们之前捕获到的这个点评数元素,RPA 真正运行的时候,如果换成另外一家酒店,或者距离我们捕获元素的时间已经间隔了很久,那么此时,它可能就定位不到这个元素了。          那么,针对这种问题,我们该如何去解决呢?我们一起来看一下。          网页元素是什么?          首先,我们先思考一个问题:既然 RPA 在运行过程中要定位的是我们事先手动捕获的网页元素,那么网页元素到底是什么呢?          之前,为了便于大家理解,我们对网页元素进行了一个比较粗略的描述,我们说网页上我们所看到的所有内容都可以称为网页元素,换句话说,一个网页就是由各种各样的网页元素组成的。那么,网页元素本身又是由什么构成的呢?其实,它本质上就是一些代码,我们把这些代码称为元素源代码,浏览器在打开网页的过程中,会把这些源代码转换成我们视觉可见的网页元素。          关于元素源代码,其实我们上节课在给大家讲解获取元素信息指令时,也简单的给大家演示过了,现在我们再来深入的了解一下,现在,我们就以百度搜索框这个元素为例,来分析一下它所对应的源代码。具体操作步骤如下:          1. 我们先在浏览器中打开百度。2. 我们按下键盘的 F12 键,或者在网页的空白处点击检查(注意:不是点击网页源代码)。3. 我们就可以看到网页的源代码了,然后,我们点击左上角的选择(或者使用快捷键:Ctrl+Shift+C)。4. 我们把鼠标移动到百度的搜索框并点击一下。5. 此时,我们会发现下面其中一行代码高亮了。          注:我们也可以把鼠标移动到百度搜索框的位置,然后直接点击鼠标右键,选择检查,它会直接定位到跟百度搜索框这个元素对应的代码,并进行高亮展示,跟上面的结果是一样的。          如下图所示,这个高亮部分的代码对应的就是百度搜索框这个网页元素。  

这个时候,可能有同学会说:“不对啊,老师,咱们不是说好的零编程基础吗?怎么现在又要懂代码了?你是不是在套路我?”          哈哈哈,大家不要慌,首先,我们的最终目标是要给 RPA 描述清楚如何找到一个网页元素,也就是说,我们更关心的是用于定位这个网页元素的规则路径,而这个网页元素所对应源代码的具体含义,我们其实并不需要太过深入的了解,我们只需要关心其中对我们定位元素有用的信息就可以了,而这些信息其实很容易理解。          现在,我们就从网页元素的结构和层级两个维度一起观察一下这些代码。          网页元素的结构          首先,从结构上来讲,我们可以看出,一行代码的结构大致分为以下三种情况:

网页元素结构示例
<xxx aa="yy" bb = "zz" ...>文字内容</xxx>           

           <xxx aa="yy" bb = "zz" ...></xxx>     

               <xxx aa="yy" bb = "zz" ...>  

那么,我们就以示例一为例,来看下一个网页元素的整体结构:                   其中,称为这个元素的开始标签,其中的 xxx 就是这个元素的名字,与之对应的  则是为结束标签,中间的文字内容则被称为元素的内容          那么,元素名字后面的 aa="yy" bb = "zz" ... 是什么意思呢?它们实际上代表的是这个元素的一些属性和属性值。属性是什么意思呢?我们之前也讲过,我们可以简单的把它理解为特征。          比如,对于一名公司员工来讲,他有哪些特征呢?我们来一起看一下:

姓名性别年龄所属部门
王妍24人力资源部
那么,我们就可以把姓名、性别、年龄、所属部门称为这名员工的属性,而与属性相对应的就是属性值,其实,我们也可以这么写:          姓名="王妍" 性别="女" 年龄=24 所属部门=人力资源部          这样一来,大家应该明白了吧,上面的 aa="yy" bb = "zz" ... 其实表示的就是元素 xxx 的属性,这些属性就是为表达元素 xxx 所具备的某些特征的。          明白了这些概念,下面我们就一起来分析一下面这行代码的结构:

开始标签元素属性内容结束标签
<a>

href = "http://news.baidu.com"target = "_blank"class = "mnav c-font-normal c-color-t"新闻                  </a>
注:实际上这行代码对应的就是百度首页左上角的 新闻 网页元素。          现在,我们再来总结一下:          网页元素 = <开始标签 (元素属性)> + (元素内容)+ <结束标签>。          开始标签          开始标签中一对尖括号(<>)和元素名,表示这是一个网页元素的开始部分,而开始标签中的开头的内容,则表示该元素的类型。          元素属性          元素属性用来描述元素的一些特征。虽然理论上来讲,一个网页元素可以不包含网页属性,但是我们实际看到的网页中,却很少出现某个网页元素不包含元素属性的,这是由以下两个原因导致的:          1. 一般情况下,我们都需要对网页元素的样式进行一些调整,比如字体、颜色等等。2. 我们可以对某些元素是进行操作,比如点击,拖拽,填写输入框等等。          无论是哪种情况,我们都需要通过元素的一些属性来首先找到这个元素,之后才能对这个元素进行样式调整,或者添加用户进行操作之后的响应逻辑。          元素内容          元素内容指的是在开始标签和结束标签之间的文本内容。元素内容则是根据实际需要来定,并非一定包含内容,比如上面表格中的示例二()就不包含。          结束标签          结束标签是一对尖括号(<>)反斜杠(/)和元素名组成,意味着一个网页元素的结束。结束标签是某些元素包含,某些元素不包含,比如上面比各种的示例三(     )就不包含。但是需要大家注意的是,这并不意味着结束标签是可有可无的。当一些元素包含结束标签时,如果开发者没有添加,那么浏览器就无法正确展示这个网页元素,同样地,当一些元素不需要包含结束标签,但是开发者却添加了,浏览器也无法正确展示这个网页元素。而具体哪些需要包含,哪些不需要包含,这里大家不用关心,我们实际上也用不到。          另外,为了方便查看,浏览器会将一个网页元素的不同组成部分用不同的颜色来进行区分:          1. 开始标签和结束标签是红色的2. 属性是黄色的3. 属性值是蓝色的4. 内容是黑色的          网页元素的层级          在了解了一个网页元素的结构之后,我们再来一起了解一下网页元素的层级。          如果大家观察仔细的话,会发现有些一行代码的开头会有一个小三角,有些则没有,而这些小三角有些是横向的,有些则是纵向的。那么,这些小三角到底代表什么意思呢?          其实,它们就是用来表达元素之间的层级的,什么意思呢?我们可以用电脑上的文件结构来解释一下,比如:

文件夹A包含文件夹B和文件1.txt、文件2.txt,而文件夹B则包含了文件夹C和文件3.txt、文件4.txt,文件夹C则没有展开。          而如果一个文件夹包含子文件夹或者文件,那么它的前方就会有一个横向的箭头(如文件夹C),点击之后即可展开,同时该箭头就会变成纵向的箭头(如文件夹A和文件夹B),而对于文件来说,前面则不包含箭头。          通过这种方式,就很好的表达了文件夹和文件之间的层级关系。          那么,对于一个网页来说,其实也是一样的,我们可以再看一下百度首页的网页源码,我们会发现这些代码之间也是有层级关系的,而且它们的层级关系的表达跟上面的文件夹是完全一样的,我们把一个网页元素的上一级元素称为其父元素,下一级元素称为其子元素,跟该元素同一级的元素则被称为兄弟元素,位置相邻的兄弟元素称为相邻元素,比如影刀商城的订单管理里面,订单的信息元素就是订单行的子元素,订单信息元素则相互称为兄弟元素,相邻的兄弟元素就是相邻元素,这一点我们在网页自动化一讲中也给大家讲过。          而如果一个元素包含子元素,则其前方就会有一个横向的箭头,展开之后箭头就变成了纵向的(当然,也可再次点击收缩回去变回横向箭头),而如果一个元素不包含任何子元素,那么它的前方就没有箭头,如下图所示: 

这就是网页元素的层级。          RPA 是如何定位网页元素的?          理解了网页元素的结构和层级之后,现在,我们一起来思考一个问题:如果想要人为的去定位某一个特定的网页元素的话,我们会怎么做呢?我们知道一个网页元素本质上对应的就是一行网页源代码,因此,换句话讲,也就是我们该如何从一个网页的源代码中找到某一行具体的代码呢?          实际上,在理解了网页元素的结构和层级之后呢,我们只需要根据网页元素的层级和元素类型,自上而下逐层定位,直至最终定位到目标元素就可以了,而如果按照这个层级结构和类型,能定位到多个不同的元素,此时我们就可以通过一些元素属性来唯一定位到目标元素,这里的属性其实就是相当于一些限制条件,我们可以通过某些限制条件,从多个不同的元素中筛选出一个具体的元素。          那么,对于 RPA 来讲,它想要定位到某一个具体的网页元素的话,其实道理也是一样的,我们一起来看一下。          我们还是以百度的搜索框为例,首先,我们先通过 RPA 来手动捕获一下百度的输入框,然后点击元素编辑器中下方的编辑按钮,这时我们会看到:          

         这其实就是我们进行手动捕获元素时,RPA 自动生成的规则路径,而 RPA 在真正运行时,就会通过这一系列规则路径来捕获到相应的元素。          那么,它跟上面我们讲的网页源代码有什么关系呢?我们可以拿它跟我们的网页源代码对比一下,仔细观察后,我们会发现,它们其实一一对应的关系,如下图所示:          

         也就是说,我们在左边元素编辑中所看到的每一个元素节点,在网页源码中都有一个网页元素跟它对应的,而且层级结构也是完全一致的。          接下来,如果我们把左边元素编辑器中的最后一个节点展开(点击前方的+),就会看到:

         这个时候,我们看看百度输入框这个网页元素的源代码:

         相信大家应该发现了,除了 index 和 index-of-type 之外,元素编辑器中所列出来的元素属性跟网页元素 input 源代码中所列出来的属性是完全一致的,其中 type 和 name 这两个属性是勾选状态。          按照同样地方式,我们可以把上层节点也都展开进行对比,我们会发现结果也是一样的,只是上面元素节点中的属性都没有勾选。          因此,我们可以把元素编辑器中的每一个元素节点和网页源码中每一行代码理解为一个网页元素的不同表现形式。          实际上,当我们手动捕获一个元素时,RPA 会自动分析出该元素所对应源代码的层级结构以及每一层元素的类型,并将其记录下来,而如果按照这个层级结构和类型,能够定位到多个不同的元素的时候,RPA 就会自动勾选一些元素属性来唯一定位到目标元素。          这就是影刀 RPA 定位网页元素的原理。          如何利用元素编辑定位动态元素?          实操案例          至此,相信大家已经理解什么是网页元素,以及影刀 RPA 是如何定位网页元素的了,接下来,我们回到本节课一开始提出的那个问题:当我们捕获的元素,其内容会发生变化时,我们该如何调整定位该元素的规则路径,从而保证其内容动态变化时,RPA 仍然可以比较稳定的定位到该元素呢?          我们就以去哪儿网酒店的点评数为例一起来看下,大家可以跟着我一起来操作一下:          1. 打开去哪儿网,然后点击进入到酒店页面,也可以直接打开:https://hotel.qunar.com/。2. 点击下方的热门推荐榜3. 进入热门推荐榜之后,随便点击一个酒店进入详情页。4. 点击点评问答5. 此时,我们就能看到关于这家酒店的点评数和问答数。6. 我们用 RPA 来捕获一下点评数这个元素,之后我们校验一下这个元素,发现是 OK 的。7. 然后,我们再返回到热门推荐榜,然后点击进入到另外一家酒店的详情页,此时我们再校验一下,就会发现 RPA 提示我们找不到该元素了。          这是为什么呢?我们可以打开元素编辑来看一下我们捕获的点评数这个元素:          

         我们发现这个元素的限制条件是 innerText 的属性值为(226),其中(226)是我们打开的第一个酒店的点评数,而我们第二次进入到另外一家酒店时,其点评数大概率是跟第一家不一样的,但是此时 RPA 在依赖点评数为(226)这个条件去寻找元素,因此就找不到了。          注:这里的(226)是我操作时的数字,具体数字以大家操作时的实际数字为准。          那么,我们该怎么办呢?          我们仔细看一下这个 innerText 的属性值,我们会发现,它其实对应的就是我们点评数,也就是说,默认情况下,RPA 启用了点评数的具体内容来作为限制条件了,显然,这个内容大概率是会发生变化的,因此,在这种情况下,我们不能使用 innerText 这个属性,所以,我们把前面的启用选项勾选给去掉,然后再校验一下,这个时候我们会发现,虽然点评数可以校验到了,但是除了点评数之外,问答数也被校验到了,说明直接去掉 innerText 属性不行,那我们尝试一下换成其他几个属性呢?结果会发现也是一样的,这也就是说把无论是直接去掉 innerText 属性,还是把 innerText 属性换成其他属性,限制条件都太宽了,所以,导致无法精准定位到点评数这个元素。          既然这一级元素的所有的属性都无法保证点评数的通用性,那么,我们就再尝试调整一下上一级的元素属性,也就是 li 元素:

         同样地,我们勾选一下不同的属性值,然后校验下试试,结果我们发现,除了 tabindex 属性不行,其他的几个我们随意勾选一个,都可以正常的校验的点评数这个元素了,然后我们可以再换其他酒店验证一下,发现也是 OK 的,这说明我们可以通过 li 这个元素节点的某些属性来唯一定位到点评数这个元素。          因此,我们来总结下:当我们需要定位一个动态元素的时候,我们可以先手动捕获该元素,然后通过元素编辑来观察一下该元素的层级结构以及哪些属性是启用的,如果这个属性值是会经常变化的,那我们就不能使用它,这个时候我们可以通过上面讲解的这种方式去一级一级调整限定条件,最终使得我们的限制条件既可以捕获到当前元素,又可以适应元素内容的动态变化,从而保证元素捕获的通用性。          但是,大家可能会觉得,这样一级一级来尝试,效率是不是有点低啊?而且就算这次定位到了一个动态元素,下次再碰到同样的问题,我们还是要一个个的尝试。那么,关于动态元素的定位,有没有一些更加通用的方法呢?          答案是有的。          RPA 中一些常用的元素属性          不过,在此之前,我们需要先来看一下元素编辑中涉及到的一些常用属性,听到这里,大家可能会说:          “老师,你是不是又套路我,你刚不是说不用理解这些代码到底啥意思吗?”“而且一个网页中,包含这么多元素,每个元素又包含那么多属性,我猴年马月才能学完啊?”“......”          哈哈哈,不要慌,首先,我们并不需要了解所有的属性,而且,我们现在之所以需要知道一些属性的含义,也仅仅是为了便于我们更加高效的定位元素。          实际上,我们最常用的属性只有下面这 5 个,掌握了这 5 个属性之后,大家后续需要定位一些比较通用的元素的时候,就不用再一个一个的去猜了,之后,定位元素对我们来说将会变得简单且高效。而且,其实这些属性理解起来其实非常简单,所以,这是一个性价比极高的事情,我们就来逐一学习一下吧。          id          id 属性其实就相当于一个元素的唯一标识符,也就是说一个网页中使用该标识符的元素只有一个,因此,我们可以用它来非常高效的确定网页中的一个元素。          什么意思呢?就像每个人都有一个身份证号一样,我们可以通过身份证号快速的定位到一个人,因此,我们可以把 id 属性对应的值理解为一个网页元素的身份证号。          class          class 属性其实也是用于标识元素的,但它跟 id 的区别在于,class 是用来标识一类元素的(当然一类元素中也有可能只包含一个),当我们用它来表示某一类元素后,后面我们就可以通过 class 属性找到所有同类型的元素。          innerText          innerText 指的是一个网页元素的内容,比如:

这个元素的 innerText 属性所对应的值就是:新闻。
         index          index 指的是当前元素在其父元素的所有子元素中所处的位置,它从 0 开始计算的,例如:

         上面 id 为 s_kw_wrap 的 span 元素包含了四个子元素,它们的 index 从上到下依次是0、1、2、3,因此,百度搜索框,也就是 input 这个网页元素对应的 index 就是 1,跟下面的元素编辑中展示的值是一样的。

         index-of-type          跟上面的 index 类似,index-of-type 也是表示元素所处的位置,也是从 0 开始计算,不过跟 index 不同的是,它表示的是当前元素在该层级所有同类型元素中所处的位置,例如:

上面的 id 属性为 s_kw_wrap 的 span 元素包含了四个子元素,那么其子元素中:          1. 第 1 行的 span 元素的 index-of-type 所对应的值是 0,因为其父元素中包含了两个 span 元素,而第一行 span 元素是这两个中的第 1 个。2. 第 2 行的 input 元素的  index-of-type 所对应的值是 0,因为其父元素中只包含了1个 input 元素,因此它也就是第 1 个。3. 第 3 行的 i 元素的  index-of-type 所对应的值是 0,因为其父元素中只包含了 2 个 i 元素,而该 i元素是这两个中的第 1 个。4. 第 4 行的 i 元素的  index-of-type 所对应的值是 1,因为其父元素中只包含了 2 个 i 元素,而该 i元素是这两个中的第 2 个。5. 第 5 行的 span 元素的 index-of-type 所对应的值是 1,因为其父元素中包含了两个 span 元素,而该 span 元素是这两个中的第 2 个。          至此,我们在影刀 RPA 中常用的 5 个属性就都介绍完了,怎么样?我没有骗你们吧?是不是很好理解?哈哈哈~          不过细心地同学可能会发现一个问题:          网页元素中的属性不是跟元素编辑中的属性一一对应的吗?可是网页源代码中并没有  index 和 index-of-type 这两个属性啊,这是为什么呢?          好问题!实际上, index 和 index-of-type 是影刀为了方便我们定位元素,额外在元素编辑中添加的两个属性,我们可以很方便地利用它们来对元素进行基于位置的定位,在后续的实际使用中也会经常用到,因为对于同一个层级的元素来讲,就算它们的其他属性完全一致,其位置也不可能一样,大家想想是不是这个道理?          利用元素编辑高效定位动态元素          现在大家对于上面这 5 个常用的属性的含义应该已经很清楚了,接下来,我们还是以上面的去哪儿酒店为例来看一下,如何利用这些元素属性精准又高效的定位一些动态元素。          不过这一次,我们在打开元素编辑的同时,也打开网页的源码,我们通过观察网页元素的结构和属性来进行元素编辑。          首先,我们先把鼠标移动到一个酒店的点评数上,然后点击右键,选择检查,可以看到其网页源码如下:          

         其中高亮部分的 span 元素对应的就是这个点评数这个网页元素,我们看到其中包含了一些属性,分别是 class、tabindex 和 uia-uid 属性,然后我们打开刚才通过 RPA 捕捉到的点评数元素:          

         注:这里大家直接忽略掉 uia-uid 这个属性即可,这是影刀 RPA 在捕获某一个元素之后,往其中添加的一个非标准的自定义属性,网页本身是不包含这个属性的。          通过元素编辑,我们发现,其中 innerText 就是 span 元素中包含的内容,也就是 (226),我们刚才已经知道了这个值是动态变化的,因此,我们不能通过这个属性来定位元素,所以我们把 innerText 全面的勾选去掉。          此时,我们再点击上方的校验元素,这个时候我们会发现,点评数和问答数都被校验出来了,这说明它们两个属于相似元素。          接下来,我们该怎么办呢?分为以下三步:          1. 找到分割节点。所谓分割节点,就是同时包含目标元素和其相似元素的最小父元素节点。为什么要找到这个节点呢?因为既然这个元素节点同时包含了这两个相似元素,那么显然该节点上层的节点也都包含这两个元素,这就意味着上层的节点包含的元素属性是无法区分出这两个相似元素的,只有通过这个节点下方的某些元素节点的属性,才能将两者区分开来。也正因为如此,我们才会将这个节点称为分割节点          2. 找到限制节点。限制节点是指分割节点以下的可以帮助我们将定位范围逐步缩小的元素节点。          4. 找到关键属性。关键属性就是限制节点里面可以能够帮助我们将目标元素和其相似元素区分开来的属性,也就是我们上面介绍的 5 个常用属性:innerText、id/class、index/index-of-type等。          下面,我们就一起来看一下具体如何操作:          首先,先找到分割节点。我们可以把鼠标放到网页的点评数上,然后点击鼠标右键,选择检查,就能看到与其对应的代码(高亮部分的代码),然后将鼠标放到这行代码上开始逐行向上移动,同时观察网页上对应的高亮模块,直到找到包含点评数和评论数这两个相似元素的父元素节点代码,也就是:

我们可以看到,它是一个 ul 元素,class 属性是 ugc-tab,那么,这个 ul 元素就是分割节点。          接下来,我们可以从分割节点开始,逐行向下移动鼠标,我们会发现:          当鼠标处于 class="current" 的 li 元素上时,其对应的就是点评数模块:

当鼠标处于 class="qa " 的 li 元素上时,其对应的就是问答数模块:

而我们最终要确定的是点评数,这个 class="current" 的 li 元素就能帮我们缩小范围,因此,它也是是一个限制节点。          之后,我们放到 span 元素上时,会进一步缩小范围,直接定位到了我们最终的目标元素:

因此,span 元素节点也是限制节点。          至此,我们就已经明确了分割节点和限制节点,我们可以打开元素编辑器对照一下:

接下来,我们就在限制节点中自上而下逐层开始找关键属性。首先,我们打开 li 元素的元素属性:

         然后,我们对照源码逐个分析下:

注:在进行某一层元素属性分析的时候,可以将该其下层代码折叠起来(点击前方小三角即可),这样看起来会更直观。          通过对比,我们发现,这两个元素的 tabindex 属性相同,class 属性不同,而由于这两个元素是同一级的,它们的位置不同,因此 index/index-of-type 也不同,我们只需要从这三个中任意勾选一个即可。          勾选完之后,再校验一下,此时我们会发现可以定位到点评数了,那么我们就可以不用再勾选下一层级限制节点(span)的属性了,现在,再换个其他酒店试试,发现也是可以的,说明我们已经定位成功了。          有些时候,可能情况会比上面的例子稍微复杂一些,但是大家只要遵循上述三个步骤,就肯定可以定位成功。          最后,再给大家一点小建议,当某一层属性中包含多个在每层中应存在多个可以定位目标元素的属性时,我们应该先勾选哪个属性再勾选哪个属性呢,实际上,我们可以结合网页的具体情况来确定:          1. 当该层元素内容和位置都不变时,使用 innerText。2. 当该层元素内容可能会发生变化,而位置不会变时,使用 index/index-of-type。3. 当该层元素内容和位置都可能会发生变化时,使用 id/class。4. 如果以上属性都不生效,再考虑其他属性。          不过,这里需要提醒大家的是,并非每一层级限制节点中的属性我们都要勾选,如果某一层级限制节点的属性勾选之后,对于定位范围没有任何影响,那我们尽量就不要勾选,限制层级越多,也就意味着通用性越差,因为其中任何一层元素属性发生变化都会导致我们需要重新调整,因此,当某一层级限制节点的属性勾选完之后已经能够定位到目标元素了,我们就可以停止后续的限制节点属性的勾选了。          总结来说就是:在限制节点中自上而下逐层勾选关键属性时,应该秉持勾选属性越少越好的原则,从而最大程度上保证了元素的通用性。          OK,到这里,我们就讲完了关于网页元素定位的全部内容,怎么样?是不是虽然看上去很复杂,但是跟着我一步步操作下来之后,发现也没那么难?哈哈哈~          当然了,关于关于网页元素的定位的,大家在实际 RPA 应用的开发过程中,还需要多多练习,练习的越多,定位就会越高效。实际上,在本节课一开始的时候我们也提到,元素的定位对于 RPA 整体工作流程的推进是至关重要的,因为想要让 RPA 帮我们高效的完成工作,我们必须首先给它描述清楚如何定位到我们给它指定的网页元素,可以说这是RPA进行一切工作的前提,也正因为如此,它某种程度上也决定着我们开发出来的 RPA 应用的整体稳定性。          不过,现在大家已经完成了这部分内容的学习,所以,在此也恭喜大家,为自己后续实际的 RPA 应用开发打下了一个坚实的基础。


         我是沐风,前腾讯、抖音开发工程师,目前专注于 RPA 办公自动化领域,如果你对 RPA 感兴趣的话,欢迎扫描下方二维码或者直接搜索微信号:im-mufeng 添加我的个人微信,一起学习交流。

分享到:

最新文章

寒假大片《补作业》火热上映中!网友:哈哈哈哈哈

2023-03-19

近期全国各地中小学陆续开学相信这段时间很多孩子都忙得飞起因为一年一度的“大片”《补寒假作业》正在如期上演网友们纷纷开启了回忆模式各种“关爱”满天飞来看看本届补寒假作业现场都有哪些神奇景象↓↓场景一江西..

妈妈太强势会毁了孩子

2023-03-19

热播剧《以家人名义》中的齐明月是一个学霸人设,学习非常好,人也美丽聪明,但是她的妈妈是一个极其凶悍的强势母亲。从小到大,齐明月所有的事情都必须听她的安排,齐明月不能有一丝一毫的反对,她只能照盘全部吸收..

如何让孩子集中精力完成功课?

2023-03-19

点击上方[教子有良方]→ 关注公众号→ 点击右上角[...]→ 点选[设为星标★]实时更新不错过幼儿专注力的建立,是从沉迷于某个有趣游戏或童话故事中开始的。当小朋友入学,..

活太累,就是因为不懂暴力沟通(好心情秘方)

2023-03-19

(我要找到1001种“让自己变好”的行动指南。 )“让自己变好” | 第36篇指南当我们责怪别人时,是什么蒙蔽了爱?“某些语言和表达方式虽致力于满足某种愿望,却忽视人的感受和需要,最终导致彼..

平安走过每一天

2023-03-19

人这一辈子,最珍贵的是什么?不是财富,不是地位,而是平安。生活平安,事业平安,身体平安,一切平安健康是福。走过的路成为背后的风景,不能回头不能停留,若此刻停留,将会错过更好的风景,保持一份平和,保持一..

绿色搭配这5种颜色,好看又气质!

2023-03-19

嗨,各位小仙女们,大家好呀!不知道你们有没有发现,每进入春季,绿色相关的单品都会很流行,不过,有人觉得像绿色系的衣服,都是比较难驾驭的,因为过高的色彩饱和度,穿起来会把肤色衬托得很黑,不懂搭配的话,还..

人手一件的小香风外套,这样穿,优雅又气质!

2023-03-19

嗨,各位小仙女们,大家好呀!到了春天,又该买买买了~说到今年春天流行的外套,Lily觉得小香风外套就非常不错的,这种自带优雅知性感的款式,相信不少姐妹们会喜欢。而且,小香风外套很适合个矮的姐妹们,穿起..