C#使用Playwright时无法选择非标准下拉框选项该如何解决?
问题根源
SelectOptionAsync 方法仅支持操作原生 <select> 标签实现的下拉框,目标站点的称谓选择下拉是前端用JS配合DIV、SPAN自定义实现的模拟下拉组件,不满足该方法的调用条件,所以执行后没有效果。
解决方法
自定义模拟下拉的操作逻辑更简单,只需要两步即可完成选择:
- 点击下拉框的触发区域,唤醒下拉选项面板
- 点击你需要选中的「Mr.」选项即可
你可以把原有代码中调用SelectOptionAsync的那一行替换为以下代码:
// 点击称谓下拉框触发区域,展开下拉选项列表 await page.ClickAsync("css=#registration-form-title + span .select2-selection"); // 点击目标选项完成选择 await page.ClickAsync("text=Mr.");
额外优化建议
尽量不要使用绝对路径的XPath定位元素,页面结构稍有变动就会导致定位失效,优先使用ID、CSS选择器、文本定位等更稳定的定位方式。
内容的提问来源于stack exchange,提问作者meliz
相关产品推荐
相关产品推荐

