Ida*_*bay 8 java selenium automated-tests winium
我正在尝试使用 Winium 自动化 Windows 应用程序 GUI。该应用程序同时使用 WPF 窗口和“Chrome Legacy Window”(Chromium) 窗口。
我正在使用“Automation Spy”工具来检查 WPF 窗口内的 GUI 元素的 id,以便与 Winium 一起使用。Automation Spy 无法检查“Chrome Legacy Window”窗口中的元素,就像 Winium 无法访问这些元素一样。
“Chrome Legacy Window”是一个 WEB 窗口,因此需要使用 Selenium 进行自动化。
如何使用 Selenium 挂接 Chromium 窗口(它不是 Firefox、Chrome 等浏览器)?
我将“remote-debugging-port=XXXX”添加到我的 CEF(Chromium 嵌入式框架)命令中:\n https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.html \这使我能够通过 localhost:XXXX 查看和管理我的应用程序的 CEF 窗口。
我使用 Winium 和 Selenium 来测试我的应用程序。\nWinium 用于我的所有 WPF 窗口,selenium 用于我的所有 CEF 窗口。\n我的 GUI 测试从 Winium 驱动程序开始,以打开我的应用程序并导航 WPF 窗口。\n每次我需要调试 CEF 窗口时,我都会使用带有“remote-debugging-port”参数的 selenium 打开 Chrome 驱动程序,这允许我单击该窗口内的元素。当我完成这个 chromium 窗口时,我将关闭 selenium 驱动程序并继续使用 Winium。
Selenium 是一个用于测试和自动化 Web 应用程序的便携式框架。\nWinium 是一个基于 Selenium 的工具,用于在 Windows 上测试和自动化桌面应用程序。\n为了在 IntelliJ IDEA 项目中使用这些模块,请按照以下步骤操作:
\n\n现在所有 Selenium 和 Winium 导入都应该可以工作。例如:
\n\nimport org.openqa.selenium.By;\nimport org.openqa.selenium.WebDriver;\nimport org.openqa.selenium.chrome.ChromeDriver;\nimport org.openqa.selenium.chrome.ChromeOptions;\nimport org.openqa.selenium.support.ui.ExpectedConditions;\nimport org.openqa.selenium.support.ui.WebDriverWait;\nimport org.openqa.selenium.winium.DesktopOptions;\nimport org.openqa.selenium.winium.WiniumDriver;\nimport org.openqa.selenium.winium.WiniumDriverService;\n
Run Code Online (Sandbox Code Playgroud)按着这些次序:
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\nc:\\temp\\\n cef_binary_3.2171.1979_windows32_client\\\n Release\\\n cefclient.exe (and other files)\n chromedriver.exe\n Example.java\n selenium-server-standalone-2.44.0.jar\n
有关详细信息,您可以阅读此 wiki:\n https://bitbucket.org/chromiumembedded/cef/wiki/UsingChromeDriver.md
\n\n按着这些次序:
\n\n启动 winium 驱动程序并打开您的应用程序:
\n\nDesktopOptions desktopOption = new DesktopOptions();\ndesktopOption.setApplicationPath("Path_to_your_app.exe");\nFile drivePath = new File("C:\\\\temp\\\\Winium.Desktop.Driver.exe");\nWiniumDriverService service = new WiniumDriverService.Builder().usingDriverExecutable(drivePath).usingPort(9999).withVerbose(true).withSilent(false).buildDesktopService();\nservice.start();\nWiniumDriver winiumDriver = WiniumDriver(service, desktopOption);\n
Run Code Online (Sandbox Code Playgroud)\n\n使用 winium 导航和测试 WPF 窗口。例如:
\n\nwiniumDriver.findElement(By.id("someElementID")).click();\n
Run Code Online (Sandbox Code Playgroud)\n\n创建一个 ChromeOptions 对象,其中包含所有必需的 selenium 信息,例如 chromium 客户端和远程调试端口。\n请确保将“XXXX”端口更改为远程调试端口。
\n\nSystem.setProperty("webdriver.chrome.driver", "c:/temp/chromedriver.exe");\nChromeOptions chromeOptions = new ChromeOptions();\nchromeOptions.setBinary("c:/temp/cef_binary_76.1.13+gf19c584+chromium-76.0.3809.132_windows64_client/Release/cefclient.exe");\nchromeOptions.addArguments("remote-debugging-port=XXXX");\n
Run Code Online (Sandbox Code Playgroud)\n\n使用 chrome 选项对象打开 chrome 驱动程序 (selenium)。
\n\nWebDriver seleniumDriver = ChromeDriver(chromeOptions);\n
Run Code Online (Sandbox Code Playgroud)\n\n在 Chromium 窗口内使用元素。例如:
\n\nseleniumWait.until(ExpectedConditions.visibilityOfElementLocated(By.className("someButtonClassName")));\nseleniumDriver.findElement(By.className("someButtonClassName")).click();\n
Run Code Online (Sandbox Code Playgroud)\n\n完成 CEF 窗口后,关闭 selenium 驱动程序并继续使用 winium 驱动程序:
\n\nseleniumDriver.quit();\nwiniumDriver.findElement(By.id("someElementID")).click();\n
Run Code Online (Sandbox Code Playgroud)\n\n关闭主 winium 驱动程序:
\n\nwiniumDriver.quit();\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
5826 次 |
最近记录: |