#selenium #webdriver
Вопрос:
Мне нужно подключить/создать экземпляр Selenium Webdriver к веб-контенту, который мое тестируемое приложение открывает в Winform.
Моя тестовая платформа открывает приложение Winform с помощью CodedUI, и дальнейшие шаги тестирования заставляют приложение Winform открывать другое окно Winform, в которое встроен браузер. Мне нужно создать или привязать экземпляр Selenium к этому встроенному содержимому браузера. Он использует WebViewer/Edge во встроенной области.
Примечание — Еще не готов перейти на WinAppDriver, если вообще когда-либо будет.
Ответ №1:
Решил эту проблему. Я узнал, что веб-панель-это объект, называемый WebView2.
Автоматизация внутри него требует, чтобы приложение запускалось особым образом:
Dim AppPath As String = "[full path to your app and its name].exe"
Dim edgeOptions As New EdgeOptions
edgeOptions.UseChromium = True
edgeOptions.UseWebView = True
edgeOptions.DebuggerAddress = "localhost:9222"
Dim AppStartInfo = New ProcessStartInfo(AppPath)
AppStartInfo.UseShellExecute = False
AppStartInfo.EnvironmentVariables("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS") = "--remote-debugging-port=9222"
Diagnostics.Process.Start(AppStartInfo)
Вам также нужно:
- Поддержка Selenium и веб-драйвер Selenium версии 4.0.0-rc3, установленный в проектах
- msedgedriver отсюда: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
И, наконец, в вашем коде автоматизации, когда наконец появится окно с WebView2, вам нужно запустить этот код, чтобы привязать selenium webdriver к панели WebView2:
Dim driver As String = "[path to:]msedgedriver.exe"
Dim edgeOptions As New EdgeOptions
edgeOptions.UseChromium = True
edgeOptions.UseWebView = True
edgeOptions.DebuggerAddress = "localhost:9222"
Dim WebDriver = New EdgeDriver(EdgeDriverService.CreateDefaultService(".", driver), edgeOptions)