Получение «x» не является функциональной ошибкой в protractor

#jasmine #protractor

#jasmine #транспортир

Вопрос:

Я столкнулся с проблемой в моем коде protractor, хотя мой код выглядит нормально без каких-либо проблем. Может ли кто-нибудь, пожалуйста, помочь мне разобраться в проблеме.

Код страницы входа

 var action=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Actions.js");

var loginPage=function(){
     var user=By.id("LoginForm_username");
     var pass=By.id("LoginForm_password");
     var submit=By.id("login_submit");
     var localvar=this;

     this.userfield=function(locator){
        return element(locator);
     }

     this.passfield=function(locator){
         return element(locator);
     }

     this.loginButton=function(locator){
         return element(locator);
     }

     this.loginFun=function(username,password){
         action.passdata(localvar.userfield(user),username);
         action.passdata(localvar.passfield(pass),password);
     }
}
module.exports=new loginPage();
  

Моя библиотека функций (Actions.js )

 var Base=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Base.js");
var PropertiesReader=require("properties-reader");
var properties=PropertiesReader("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Objects.properties");
var spage=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Pages/SurveysPage.js");

var Actions=function(){ 

    this.clickOnElement=function(element){
        element.click();
    }

    this.passdata=function(element,text){
      element.sendKeys(text);
    }
}
module.exports=new Actions();
  

мой базовый файл

 var spage=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Pages/SurveysPage.js");
var PropertiesReader=require("properties-reader");
var properties=PropertiesReader("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Objects.properties");
var LoginMod=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Pages/loginPage.js");
var Action=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Actions.js")

var base=function(){
    var local=this;
    this.browserInit=function(url){
        browser.ignoreSynchronization=true;
        browser.get(url);
        browser.manage().window().maximize();
        browser.sleep(2000);
    }

    beforeAll(function(){
       local.browserInit("https://***.****.com/site/login");
       LoginMod.loginFun("dsfdsf","fdf");

    });
}
module.exports=new base();
  

Мой журнал ошибок

 Message:
    Failed: action.passdata is not a function
  Stack:
    TypeError: action.passdata is not a function
        at loginPage.loginFun (/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Pages/loginPage.js:22:17)
        at UserContext.<anonymous> (/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Base.js:19:17)
        at /usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:112:25
        at new ManagedPromise (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1077:7)
        at ControlFlow.promise (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2505:12)
        at schedulerExecute (/usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:95:18)
        at TaskQueue.execute_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:3084:14)
        at TaskQueue.executeNext_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:3067:27)
        at asyncRun (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2974:25)
        at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:668:7
    From: Task: Run beforeAll in control flow
        at UserContext.<anonymous> (/usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:94:19)
        at Jasmine.execute (/usr/local/lib/node_modules/protractor/node_modules/jasmine/lib/jasmine.js:200:12)
        at /usr/local/lib/node_modules/protractor/built/frameworks/jasmine.js:132:15
        at Function.promise (/usr/local/lib/node_modules/protractor/node_modules/q/q.js:682:9)
    From asynchronous test: 
    Error
        at new base (/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Base.js:17:5)
        at Object.<anonymous> (/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Base.js:23:16)
        at Module._compile (internal/modules/cjs/loader.js:701:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
        at Module.load (internal/modules/cjs/loader.js:600:32)
        at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
        at Function.Module._load (internal/modules/cjs/loader.js:531:3)
        at Module.require (internal/modules/cjs/loader.js:637:17)
        at require (internal/modules/cjs/helpers.js:22:18)
  

если вы посмотрите журнал ошибок, там указано, что ошибка «не является функцией», даже несмотря на то, что в файлах js есть функции, и я объявляю требование файла js и вызываю эти функции с помощью var файлов js..

Файл спецификации

 var functionlib=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Actions.js");
var PropertiesReader=require("properties-reader");
var properties=PropertiesReader("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Objects.properties");
var surveyPage=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Pages/SurveysPage.js"); 
var loginpage=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Pages/loginPage.js");
var base=require("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Base.js");

describe("this is a test method",function(){

var title;
    it("this is a test move to the dashboard",function(){
        title=browser.getTitle().then(function(Pagetitle){
            return Pagetitle;
        });

    });


});
  

Конфигурационный файл

 var PropertiesReader=require("properties-reader");
var properties=PropertiesReader("/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Utilities/Objects.properties");

exports.config={
        seleniumAddress:"http://localhost:4444/wd/hub",
        capabilities:{
            browserName:properties.get("browser"),
        },
        params:{
            username:'mdtutorial01@gmail.com',
            password:'test'
        },
        //suites:{
        //  surveys:['/Users/satish/eclipse-workspace/Upshot-Protractor/src/main/java/com/upshot/surveys/Pages/SurveyTest.js']
        //,
specs:properties.get("specs") "SurveyNav.js",
        framework:"jasmine"
}
  

Комментарии:

1. ну, Base.login определенно не является функцией — не уверен, почему другая не является

2. да, я обновляю код, но все равно получаю действие.passdata не является функциональной ошибкой

3. вы все еще получаете Error at new base , хотя

4. Да, это то, что я не понимаю, в чем проблема .. если вы сможете найти, пожалуйста, помогите мне в этом

5. но он просто говорит «Ошибка», не указывая, что это за ошибка