vb.net - WinAppDriver - 无法在组合框中单击项目或选择项目
问题描述
使用 WinAppDriver 和 VB.NET,我试图在组合框中选择一个项目。我需要直接选择它,而不是通过键盘输入或光标键导航来选择它,因为这会触发对未选择项目的其他程序操作。
我一直在尝试使用.FindElementByXPath
和选择项目.click
。
我使用 WinAppRecorder 来获取 xpath,从中删除了不必要的重复标识符。以下 xpath 和代码用于使组合框下拉:
Dim xStateCbo As String = "/Pane[@Name=""Desktop 1""][@ClassName=""#32769""]/Window[@AutomationId=""WorkItemForm""]/Window[@AutomationId=""ADlg""]/Pane[@AutomationId=""flpMain""]/Pane[@AutomationId=""pnlTopSection""]/Pane[@AutomationId=""pnlState""]/ComboBox[@AutomationId=""cboState""]"
ProgramSession.FindElementByXPath(xStateCbo).Click()
Threading.Thread.Sleep(1000) 'make sure cbo has time to open
在让 cbo 下拉后,我尝试通过单击来选择所需的项目。
使用 WinAppRecorder 记录一次点击,我得到以下代码(转换为 VB.NET):
Dim xp4 As String = "/Pane[@Name=""Desktop 1""][@ClassName=""#32769""]/List[@Name=""State of Residence: ""][@ClassName=""ComboLBox""]/ListItem[@Name=""DELAWARE""]"
ProgramSession.FindElementByXPath(xp4).Click()
(注意在打开的cbo中点击item的xpath比一开始点击cbo的要短,可能是因为一些cbo在更高级别打开的方式。我认为这是正常的,与问题无关.)
上面的代码现在应该在我现在打开的组合框中找到并单击“DELAWARE”,但是我得到了找不到元素的标准异常:
System.InvalidOperationException: 'An element could not be located on the page using the given search parameters.'
这不是大小写问题,cbo 中的所有内容都大写。这不是时间问题,因为我已确保 cbo 完全下拉并填充。
我也尝试过点击搜索,也使用.FindElementByName
等 和来自 Inspect.exe 的标识符,但也没有运气。我不在乎使用什么解决方案来选择目标项目。我对任何可靠的工作持开放态度。
解决方案
推荐阅读
- bash - 在 sqlcmd 中使用 bash 变量
- excel - 以不同方式计算度量
- java - 为什么按钮在点击时会调整大小
- java - 为什么在 Spring Boot 上使用 MappingJacksonValue
- python - Drag_and_drop 什么都不做
- reactjs - 如何使用带有 useEffect React 钩子的 async/await,我尝试了很多示例,但没有任何效果
- python - 如何解决此错误:TypeError: 'NoneType' object has no attribute '__getitem__'
- node.js - 在本地 docker localhost:8000 中使用 dynamodb 和在 localhost:4500 上运行的 serverless-framework serverless-offline 应用程序
- vue.js - Babelify 不转换 Vue 组件中的箭头功能
- javascript - 使两个数据数组之一不那么详细/减少总长度的方法?