如何定位AJAX加载的下拉列表元素?已尝试XPath定位无效
问题解决
原XPath失效原因
你编写的XPath要求<li>元素的role属性同时满足等于presentation、包含option两个条件,但实际HTML结构中role="option"是<li>子节点<a>标签的属性,和<li>本身的role属性无关,因此无法匹配到任何元素。
正确定位方案
以下XPath均基于当前页面结构编写,优先使用元素id保证定位稳定性:
- 定位当前下拉的所有可点击选项
//ul[@id="edit-quantity-left-eye-menu"]//a[@role="option"]
- 定位指定数值的选项(以选择数值
3为例,可替换为你需要的目标数值)
//ul[@id="edit-quantity-left-eye-menu"]//a[@role="option" and text()="3"]
- 定位当前已选中的选项
//ul[@id="edit-quantity-left-eye-menu"]//a[@aria-selected="true"]
- 如果你需要先定位
<li>再找子元素,可使用以下写法:
//li[@role="presentation"]/a[@role="option"]
AJAX加载场景适配注意事项
- 执行定位前优先设置显式等待,等待AJAX请求完成、下拉列表容器
ul#edit-quantity-left-eye-menu加载完成后再执行后续操作,避免元素未渲染导致定位失败。 - 当前下拉列表默认
aria-hidden="true"为隐藏状态,需要先点击对应触发按钮(对应aria-labelledby属性指向的edit-quantity-left-eye-button按钮)展开下拉后,再操作选项元素,避免因元素不可交互导致操作失败。
内容的提问来源于stack exchange,提问作者AutoTestLearner
相关产品推荐
相关产品推荐

