使用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中的项目的xpath短于首先单击cbo的xpath,这可能是因为某些cbo在较高级别中打开的方式。我认为这是正常现象,与之无关解决这个问题。)
上面的代码现在应该在我现在打开的组合框中找到并单击“ DELAWARE”,但是相反,我得到了找不到元素的标准异常:
System.InvalidOperationException: 'An element could not be located on the page using the given search parameters.'
这不是套管问题,cbo中的所有内容都大写了。这不是时间问题,因为我已经确定cbo已完全下拉并填充。
我也尝试过使用.FindElementByName
等点击和Inspect.exe中的标识符进行搜索,但是这些都没有用。我不在乎使用哪种解决方案来选择目标项目。我愿意接受任何可靠的方法。