如何使用 WinAppDriver 定位 Modal window of Modal window 上的元素

How to use WinAppDriver to locate elements on Modal window of Modal window

我正在尝试使用最新的 WinAppDriver v1.2.1.WinAppDriver 在 windows 10 pro 上自动化 Windows 打印机驱动程序应用程序。 测试脚本无法在 Preferences Window 上找到任何元素,这是一个 Modal window 的 Modal Window。 测试场景如下:

  1. 测试脚本启动 notepad.exe,找到并单击打印菜单项,显示打印模式 window。
  2. 然后找到并单击“打印模式”window 上的“首选项”按钮,显示“首选项模式”window。
  3. 然后尝试点击首选项模式 Window 上的元素,但失败了。

这是我的示例代码,使用 Appium-Python-客户端库:

from appium import webdriver

desired_caps = {}
desired_caps["app"] = "C:\Windows\notepad.exe"
desired_caps["platformName"] = "windows"

driver = webdriver.Remote(
    command_executor='http://127.0.0.1:4723',
    desired_capabilities= desired_caps)

driver.find_element_by_name("ファイル(F)").click()
driver.find_element_by_accessibility_id("6").click()

# click elements on the Print modal window
driver.find_element_by_accessibility_id("1010").click()

# click elements on the Preferences modal window
driver.find_element_by_xpath("/Pane[@ClassName=\"#32769\"][@Name=\"デスクトップ 1\"]/Window[@ClassName=\"#32770\"][@Name=\"印刷設定\"]/Tab[@ClassName=\"SysTabControl32\"]/TabItem[@Name=\" 拡張機能 \"]").click() 
driver.find_element_by_xpath("/Pane[@ClassName=\"#32769\"][@Name=\"デスクトップ 1\"]/Window[@ClassName=\"#32770\"][@Name=\"印刷設定\"]/Button[@ClassName=\"Button\"][@Name=\"設定(E)...\"]").click()
driver.find_element_by_xpath("/Pane[@ClassName=\"#32769\"][@Name=\"デスクトップ 1\"]/Window[@ClassName=\"#32770\"][@Name=\"印刷設定\"]/Window[@ClassName=\"#32770\"][@Name=\"セキュリティ印刷設定\"]/CheckBox[@ClassName=\"Button\"][@Name=\"セキュリティ印刷(S)\"]").click()

WinAppDriver 的日志:

{"status":7,"value":{"error":"no such element","message":"An element could not be located on the page using the given search parameters."}}

是否有任何其他方法可以在后代模态 window、首选项模态 window 上定位元素?

第二个模态 window(首选项模态 window )实际上被视为新的 window(其 window 句柄由 winappdriver 管理)。将会话切换到 window 并使用相对 xpath 后,我解决了问题。