t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как правильно задефенировать элементы в Андройд аппликации, используя C#, Appium?

visual-studio
appium
net-core
Теги: #<Tag:0x00007fb2f9be5ee8> #<Tag:0x00007fb2f9be5da8> #<Tag:0x00007fb2f9be5c40>

(Valentin G ) #1

Всем добрый день.
Экспериментирую с Appium, используя C#, Net core платформу. Для экспериментов использую старый планшет с Андройдом 5,1 и аппликацию - Калькулятор. Начал с пройстеших тестов - операции +, -. Первый тест был таким и проходил:

[Test]
        public void PlusTest()
        {
           IWebElement firstNumber = _driver.FindElementById("com.android.calculator2:id/digit_5");
           firstNumber.Click();
           
           IWebElement plusButton = _driver.FindElementById("com.android.calculator2:id/op_add");
           plusButton.Click();
           
           IWebElement secondNumber = _driver.FindElementById("com.android.calculator2:id/digit_9");
           secondNumber.Click();
          
           IWebElement equalsButton = _driver.FindElementById("com.android.calculator2:id/eq");
           equalsButton.Click();
           IWebElement resultField = _driver.FindElementById("com.android.calculator2:id/formula");
           var result = resultField.Text;
           Assert.AreEqual(14, int.Parse(result));
        }

Начал пробовать внедрение PageObject.
Пробую такие веб элементы (использую accessibility-id):

[FindsByAndroidUIAutomator(ID = "com.android.calculator2:id/op_sub")]
public IWebElement MinusBtn { get; set; }

Кое-как понял, как правильно инициировать обьект, но не находит, получаю такую ошибку:

OpenQA.Selenium.NoSuchElementException : Couldn't locate an element by these strategies: Locator map: 
- native content: "By.Id: <Digit5Btn>k__BackingField; " 
- html content: "ByIdOrName([<Digit5Btn>k__BackingField]); " 
  ---->

Может кто-нибудь помочь с данной проблемой? Или показать как правильно дефинировать/искать элементы?


#2

@Valentin_G , попытаюсь вам помочь, но не гарантирую, что причина именно в этом :sweat_smile:
Текст ошибки говорит, что проблема в локаторе - по какой-то причине Appium не может найти элемент. Попробуйте вместо ID отыскать этот элемент по Xpath или AccesabilityID. Но, имейте в виду, что з Appium-ом не все так просто, как с Selenium-ом - эта статья может помочь

Кроме того, YouTube видео и Github проекты - C#+Appium вам в помощь. Я когда начинала разбираться с мобильной автоматизацией, проходила этот курс - одно из тех видео как раз объясняет об автоматизации приложения Калькулятор для Android-a, правда, используя Java.

Надеюсь, что-нибудь из выше перечисленного вам поможет :slight_smile:
Успехов вам!


(Valentin G ) #3

Спасибо за ссылку, посмотрю. И похоже, у аппиума есть баг (так считаю, пока нету опровержения :slight_smile: ). Тут завел его.