0

我正在尝试使用 Selenium 自动化 Salesforce 闪电,但在识别元素时遇到问题。原因,它具有动态 ID 和其他属性要么很长,要么它们不是唯一的。

例如,

<a id="170:1968;a" class="textUnderline outputLookupLink slds-truncate forceOutputLookup" 
data-refid="recordId" 
data-recordid="0059E000001aOCSQA2" 
data-special-link="true" 
href="#/sObject/0059E000001aOCSQA2/view" 
target="_blank" rel="noreferrer" 
title="" data-aura-rendered-by="170:1968;a" data-aura-class="forceOutputLookup"/>

在上面的代码中,ID 是动态的,Class 不是唯一的,所有 Lookup 元素都与之关联。绝对路径也不太受信任,因此我试图找到任何具体的选项来处理这些元素。任何帮助将不胜感激。

4

3 回答 3

0

在这里,如果 id 属性值的至少一部分是静态的,您可以尝试使用 contains 方法。从您的代码中,您可以尝试

//a[contains(@id,"a")]/ //--extended xpath--

从给定的 html 代码中, a标签的 id 属性中的 'a'看起来是静态的,而其余部分会发生变化。

于 2017-09-06T05:53:39.043 回答
0

您可以要求开发人员使用 aura:id 为闪电组件提供一个 id ,然后不会生成动态 id。

于 2018-06-28T15:41:00.703 回答
0

您可以尝试使用字段标签并获取其父节点,然后获取子节点或兄弟节点以定位相关文本/文本框等。

例如。您在帐户编辑/新建页面中,您想在帐户名称字段的文本框中填写一个值。因此,您可以首先尝试找到一个同时覆盖字段标签和文本框//*[text()='Account Name']/parent::*的元素。

然后您可以检查文本框是“兄弟”还是“孩子”。如果是“孩子”,请尝试使用//*[text()='Account Name']/parent::*(/parent::*)//*[attributes for the text box]; 如果是“兄弟”,请尝试//*[text()='Account Name']/parent::*(/parent::*)/following-sibling::*[attributes for the text box]

您可以使用此逻辑来定位所有标准闪电页面中的所有类型的字段。

于 2019-07-08T08:01:49.083 回答