使用 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 的标识符,但也没有运气。我不在乎使用什么解决方案来选择目标项目。我对任何可靠的工作持开放态度。