Framework: Appium + Protractor + Cucumber + Typescript с использованием модели POM
- У меня есть структура транспортира для appium, разработанная в структуре POM
- На начальной странице приложения будет указан локаторы, вызывающие другой ts-файл, и функции, такие как tap, isDisplayed, вызывающие его в другом ts-файле.
- Но как только он проходит начальные страницы в приложении, скажем, 3 страницы. не идентифицированы локаторы, которые вызывают другую функцию, но они идентифицируются, когда они передаются напрямую (например, driver.findelements (by. css ('')). click) это работает.
- Проблема Я не могу передать этот код, как этот, в файле .ts определения шага всегда, так как это не очень хорошая структура
Примечание: Кстати, этот скрипт работал хорошо раньше. попытался протестировать, используя другой обходной путь, например, снова собрать двоичный файл, попытаться запустить приложение android и ios, понизив или обновив пакеты узлов. Но ничто не решило проблему. кто-нибудь сталкивался с такой проблемой. Любые предложения или решения для этой проблемы, пожалуйста?
Код, который работает: (Передача локаторов непосредственно в функцию, а не из файла onboarding.ts будет работать)
Then(/^VIC should be selected from the state or territory drop down$/, async () => {
await browser.driver.findElement(by.css('button[sp-automation-id=\'select-state-toggle\']')).click();
await browser.driver.findElement(by.css('page-action-sheet label[sp-automation-id=\'action-sheet-option-VIC\']')).click(); });
Код, который не работает: (файл Onboarding.ts содержит локаторы, определенные для State и VI C, такие же, как в приведенном выше блоке кода. Но чтение с него не работает.)
Then(/^VIC should be selected from the state or territory drop down$/, async () => {
await AutomationAction.tap(Onboarding.State);
await AutomationAction.tap(Onboarding.VIC); });
Код, который работает (приведенный ниже код вызывается перед блоком кода выше, это страница перед вызовом вышеуказанных страниц)
Then(/^I enter the mobile number and tap next button on the your mobile number screen$/, async () => {
MobileNo = AutomationAction.getMobileNumber("mobileNumber");
SameMobileNo = MobileNo;
await AutomationAction.sendKeyText(Onboarding.InputMobileNo,MobileNo);
await AutomationAction.tap(Onboarding.Next_BTN_YourMobileNumber);
}) ;