javascript - 如何找到动态 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="">
解决方案
你的第一个 xpath 表达式
//input[ends-with(@id,'_2')]
应该正常工作。不幸的是,您的系统可能仅支持 xpath 1.0 并且ends-with()
是 xpath 2.0 表达式。
您可以尝试通过使用来绕过该限制
//input[substring(@id,string-length(@id)-1 )="_2"]
看看它是否有效。
推荐阅读
- phpexcel - phpexcel中的除法不起作用(公式)
- google-bigquery - 通过控制台 UI 将 CSV 文件上传到 BigQuery 时收到“读取数据时出错”错误
- java - java8不止一次检查可选的空值
- events - AttributeError:“事件”对象没有属性“mouse_pos”
- c++ - 为什么我的 fltk 程序编译但不运行?
- erlang - 添加插件后 EMQ 启动时出现错误:您尝试设置 XXX,但没有设置该名称
- express-validator - express-validator 错误检查
- sql - 在 SQL 中选择列表类型列的第一个元素
- gcc - 如何在 GNU ARM 程序集中保留未初始化的内存?
- excel - Excel公式计算引用单元格的离散实例