Я пытаюсь изучить Appium и использую его для тестирования приложений WPF.Тесты на калькуляторе или блокноте выполняются нормально, но недавно я столкнулся с проблемой при попытке протестировать пользовательское приложение WPF.
Выдает тестовые приложения настольного приложения Appium. «Невозможно найти элемент на странице с помощью указанного поиска.параметры "исключение, но проходят без проблем, когда приложение запускается перед тестовым запуском.Итак, я предполагаю, что моя фаза Setup / Init неправильная, но я не знаю, почему.
Ошибка возникает, когда тест запускается без запуска приложения первым (например, когда фаза SetUp должна запустить приложение),Тест проходит, когда приложение запускается перед тестовым запуском или даже когда оно остается открытым после предыдущего неудачного тестового прогона.
Запуск приложения занимает около 10–15 секунд, в течение которых сначала отображается экран косой черты, а затемглавное окно приложения.
Appium.WebDriver nuget packege используется в проекте, версия 3.0.0.2
Я пробовал Thread.Sleep в течение 30 секунд, но это не такрешить проблему.
[TestFixture]
public class DesktopAppSession
{
protected WindowsDriver<WindowsElement> _session;
protected const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
protected const string AppId = @"<path to app.exe>";
[SetUp]
public void TestInit()
{
if (_session != null)
return;
var appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", AppId);
appCapabilities.SetCapability("deviceName", "WindowsPC");
_session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
Assert.IsNotNull(_session);
Thread.Sleep(TimeSpan.FromSeconds(30));
_session.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
}
[TearDown]
public void TestCleanup()
{
if (_session != null)
{
_session.Quit();
_session = null;
}
}
[Test]
public void UserInfoModalShowsUp()
{
var userInfoButtonAName = "UserInfoButtonAName";
var userInfoButtonId = "UserInfoButtonAID";
var userInfoButton = _session.FindElementByAccessibilityId(userInfoButtonId);
Assert.True(userInfoButton != null);
userInfoButton.Click();
var userDetailsTitleLabel = _session.FindElementByName("User details");
userDetailsTitleLabel?.Click();
Assert.True(true);
}
}
Сообщение об исключении:
System.InvalidOperationException HResult = 0x80131509 Сообщение = Не удалось найти элемент на странице с использованием заданных параметров поиска.Source = WebDriver StackTrace: в OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError (отклик errorResponse) в OpenQA.Selenium.Remote.RemoteWebDriver.Execute (строковое значение DriverCommandToExecument * String 1.FF * StringText_1 * StringText_File_Next_File_Next_File_Name_Next_Lext_File_Name_Next_File_Next_F_LVE_Next_F_L_F_L_C_L_C_L_C_L_C_L_LF_1 * * *.
Журнал из WinAppDriver:
"POST / session / 23293B57-F396-47CC-83EF-FCA491E269B0 / element HTTP / 1.1 Принять: application / json, image / png Длина содержимого: 56 Тип содержимого:application / json; charset = utf-8 Хост: 127.0.0.1:4723
{"using": "идентификатор доступности", "value": "UserInfoButtonAID"} HTTP / 1.1 404 Not Found Content-Length:139 Content-Type: application / json
{"status": 7, "value": {"error": "no such element", "message": "Не удалось найти элемент на страницеиспользуя заданные параметры поиска. "}}"