每次我尝试使用通配符(*)动态引用我收到例外的HTML元素:
错误-突出显示结果-调用的目标抛出了异常。
在所附示例中,我尝试使用动态路径查找“输入”:
/HTML/BODY(1)/FORM(1)/DIV(1)/DIV(2)/DIV(4)/DIV(1)/DIV(1)/DIV(3)/DIV(1)/DIV(1)/DIV(1)/*/INPUT(1)
完整路径:
/HTML/BODY(1)/FORM(1)/DIV(1)/DIV(2)/DIV(4)/DIV(1)/DIV(1)/DIV(3)/DIV(1)/DIV(1)/DIV(1)//DIV/INPUT(1) ^^^^
有人对此有任何经验吗?是某些内部错误,还是根本不可能?
长话短说:我正在构建灵活的对象,该对象将适用于不同的页面结构。假设对象路径的一个示例是:
A/B/C/D/E/Input(1)
另一次是:
A/B/C/E/F/Input(1)
公共路径元素始终为:
A/B/C
AND:
Input(1)
路径中间是灵活的,因此在一种情况下可能是:
A/B/C/F/H/X/Z/Input(1)
这就是为什么我要使用以下方法动态引用那些输入元素的原因:
A/B/C/*/Input(1)
但是由于某种原因,它给了我错误。我使用的是Match Index = 1,因此它应该始终是第一个找到的对象,但它会给出异常。
答案 0 :(得分:0)
因此,调试或解决问题并非易事,因为您遇到的问题可能是Blue Prism问题,但也可能是潜在的目标应用程序问题。因此,我将逐步进行操作,但是如果您希望重新提交问题以寻求更多帮助,请询问更多信息。我们需要做的其他事情是关于yoru Blue Prism设置的信息,即版本号,应用程序建模器版本.net版本等。然后还涉及底层系统的信息,例如chrome / IE等是javascript网站还是引导网站。它是动态的吗?
现在要解释该错误,并详细说明其发生的可能原因。
Exception has been thrown by the target of an invocation
这段文字意味着某个线程正在异步运行某些代码,而异步执行已失败并且该异常已弹出到主代码中。即目标调用引起了问题。通常,在现实世界中的编程中,您将在这些组件周围包裹更多的异常处理,这些组件将执行以捕获错误并生成堆栈跟踪以进行调试,但是当我们运行它时,Blue Prism对我们而言是不存在的。可能发生的情况是Application Modeler尝试连接到目标应用程序,而在连接时,它随后尝试使用通配符对xml树结构进行某种形式的解析,然后在执行此调用时失败。此调用是异步发生的,并且失败,并且错误一直冒泡回到主要的Blue Prism应用程序中(如果您不知道应用程序建模器和BP是两个互相交谈的独立应用程序。)此问题的确切分类尚不清楚但是我认为应用建模器中目前存在某些Web浏览器存在通配符搜索错误,并且该错误自晚期以来就存在。在某些情况下,动态属性也发生了,尽管在发行说明中6.4中已解决了这些问题。
发生这种情况的另一种可能性是,您已连接到该应用程序的错误子实例,并且尽管Blue Prism的行为使其可以在屏幕上看到并突出显示所有这些元素,但当您与其中的某些元素进行交互时,它们却会失败。从应用程序的此正在运行的实例中分离出来,然后在执行附加操作的导航阶段中使用不同的附加条件重新附加,从而调整子索引值。您可以从0开始,以1的增量递增,说2或3,然后在连接成功连接后再次尝试监视。这些是我所知的唯一避免您遇到的问题的方法,希望这可以帮助您了解正在发生的事情并可能解决您的问题。
答案 1 :(得分:-1)
我想页面中有几个输入? 这会导致此问题,因为您为div放置了通配符并要求输入(1)。但是有几个input(1)取决于div。
示例:
DIV(1)/DIV(1)/DIV(2)/INPUT(1)
DIV(1)/DIV(1)/DIV(3)/INPUT(1)
有DIV(2)中的INPUT(1)和DIV(3)中的INPUT(1)。
在此处放置通配符会要求输入INPUT的倍数,并且不起作用。