У меня есть пользовательский класс представления Android, созданный с помощью проекта библиотеки классов Android, который называется «компоненты» с пользовательскими свойствами, определенными в Resources / values / Attrs.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<declare-styleable name="SwitchWithData">
...
<attr name="isOn" format="boolean"/>
</declare-styleable>
</resources>
Пользовательский класс представления определен в CustomView.cs.с открытым свойством.
public bool IsOn {
get { return _isOn; }
set { _isOn = value; SeIsOn(value); }
}
При работе с настраиваемым представлением в макете или из кода я могу получить доступ к свойству.
Android-проект со ссылкой на компоненты проекта - resource / layout.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
...
<Components.CustomView
app:IsOn="true"
android:id="@+id/CustomView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Даже доступ к свойству из кода работает нормально.- MainActivity.cs
customView = FindViewById<Components.CustomView>(Resource.Id.CustomView);
customView.IsOn = true;
Таким образом, проблема заключается в том, чтобы получить доступ к этому свойству из проекта Xamarin.UiTest.Обычно я обращался к свойствам, вызывая метод invoke следующим образом.
app.Query(x => x.Id("Switch").Invoke("isChecked").Value<bool>()).First();
это нормально работает с нативным представлением Android, но когда я пытаюсь использовать тот же метод для доступа к свойствам моего пользовательского представления, оно возвращает пустой объект.
app.Query(x => x.Id("CustomView").Invoke("isOn").Value<bool>()).First();
Есть идеи, что я делаю не так?