首页 > 解决方案 > 如何找到动态 xpath 元素

问题描述

我有一个 web 元素,它的 xpath 是动态生成的,但它以“_2”结尾。xpath 具有以下格式:

//*[@id="hNQjKwNtHyHqFtVtOQTm_2"]
//*[@id="dZcUekrklXsbv_AlImka_2"]

我试过了 :

    //input[ends-with(@id,'_2')]"
    //*[contains(@id="_2")]'

以及与包含的不同组合,但我没有运气。我似乎无法做到这一点,有没有其他方法可以做到这一点,或者你能帮我理解问题所在吗?

在量角器中,我收到一条错误消息,通知我 xpath 无效

<input data-bind=" attr: { maxlength: maxlength, type: type, id: id, 'data-type': dataType, disabled: disabled, 'aria-disabled': disabled, 'pattern': pattern, 'inputmode': 'numeric', 'max': $data.max, 'min': $data.min, 'step': $data.step, 'tabindex': $data.tabIndex, 'aria-invalid': isInvalid, 'aria-label': label }, value: val, valueUpdate: valueUpdate, css: { error: $data.err, hasFocus: hasFocus, hideCaret: $data.hideCaret, hasValue: hasValue }, event: { focus: onFocus, blur: onBlur }" autocomplete="off" autocapitalize="off" autocorrect="off" formnovalidate="" required="" maxlength="11" type="tel" id="dZcUekrklXsbv_AlImka_2" pattern="[0-9]*" tabindex="2000" aria-invalid="true" class="">

标签: javascriptxpathprotractor

解决方案


你的第一个 xpath 表达式

//input[ends-with(@id,'_2')]

应该正常工作。不幸的是,您的系统可能仅支持 xpath 1.0 并且ends-with()是 xpath 2.0 表达式。

您可以尝试通过使用来绕过该限制

//input[substring(@id,string-length(@id)-1 )="_2"]

看看它是否有效。


推荐阅读