Javascript 无法在量角器2.5.1和jasmine 1.3.1上运行我的测试用例?

Javascript 无法在量角器2.5.1和jasmine 1.3.1上运行我的测试用例?,javascript,jasmine,protractor,Javascript,Jasmine,Protractor,my conf.js: exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', capabilities: { 'browserName': 'firefox' }, onPrepare: function() { browser.driver.manage().window().maximize(); protractor.basePath = __dirname;

my conf.js:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: {
    'browserName': 'firefox'
  },

  onPrepare: function() {
      browser.driver.manage().window().maximize();
      protractor.basePath = __dirname;

  },
  suites : {
  qa:   ['./specs/log_in.js','./specs/create_project_external_roles.js','./specs/create_position_us_roles.js',

 beta:   ['./specs/log_in_beta.js','./specs/create_position.js', './specs/candidate_status.js'],

  },

  jasmineNodeOpts: {
      defaultTimeoutInterval: 3000000,
      allScriptsTimeout: 3000000,
      rootElement: "div",
      showColors: true
  },
  baseUrl: '',
};
直到上周五晚上,这一切都很顺利。突然,我发现了这个错误:

失败:等待量角器与页面同步时出错:“在窗口上找不到角度”

登录.js

require(protractor.basePath+'/data/config_values.js');

describe('', function()
{
    it('', function()
    {
        browser.get(url);
        browser.driver.manage().deleteAllCookies();
        browser.ignoreSynchronization = false;
        expect(browser.getTitle())
        element(by.model('username')).sendKeys(user);
        element(by.model('password')).sendKeys(pwd);
        element(by.css('[ng-click="userLogin()"]')).click();
        browser.sleep(5000);
        _current_url_beta = url+'/dash#/'
        expect(browser.getCurrentUrl()).toEqual(_current_url_beta);

    });
});
创建_project.js

describe('', function()
{
    it('while clicking create button:', function () {

        element(by.css('span.icon-dir-down')).click();
        browser.sleep(5000);
    });

    it('while clicking create project button:', function() {

        element.all(by.css('[ng-click="openProjectModal($event)"]')).click();
        browser.sleep(5000);
    });
    it('Sending values to project name field', function() {

        element.all(by.model('data.projectName')).sendKeys(external_project_name)
        browser.sleep(5000);
    });

    it('while Clicking domain:', function() {

        element(by.css('a.chosen-single.chosen-default')).click();
        browser.sleep(5000);
    });

    it('Sending values to domain field', function() {

        browser.driver.findElement(By.xpath('//*[@id="Domain_chosen"]/div/div/input')).sendKeys("Information");
        browser.sleep(4000);
    });

    it('selecting domain', function() {

        browser.driver.findElement(By.xpath('//*[@id="Domain_chosen"]/div/ul/li[4]')).click();
        browser.sleep(5000)
    });

    it('while clicking external project button:', function() {

        element.all(by.css('label.btn.btn-default.ng-pristine.ng-untouched.ng-valid')).click();
        browser.sleep(5000);
    });

    it('sending values to external field:', function() {

        browser.driver.findElement(By.xpath('//*[@id="Company"]')).sendKeys("wipro");
        browser.sleep(3000);
    });

    it('selecting external company name', function() {

        element.all(by.css('a.ng-scope.ng-binding')).filter(function (a, index) {
            return index == 0;
        }).each(function (a) {
            a.click();});
        browser.sleep(3000);
    });

    it('Clicking Calender icon:', function(){

        browser.sleep(5000);
        element(by.css('i[ng-click^=open]')).click();
        browser.sleep(3000);
        element(by.css('[ng-click="move(1)"]')).click();
        browser.sleep(4000);
        element(by.css('[ng-click="select(dt.date)"]')).click();
        element(by.css("i[ng-show]")).click();
        element.all(by.css('button.btn.btn-default.btn-sm.pull-right')).filter(function (button, index) {
            return index == 1;
        }).each(function (button) {
            button.click();});
        element.all(by.css('button.btn.btn-default.btn-sm.pull-right')).filter(function (button, index) {
            return index == 1;
        }).each(function (button) {
            button.click();});
        element.all(by.css('button.btn.btn-default.btn-sm.pull-right')).filter(function (button, index) {
            return index == 1;
        }).each(function (button) {
            button.click();
        });
    });

    it('Sending project Description to :',function() {

        browser.sleep(3000);
        browser.driver.findElement
        (By.xpath('/html/body/div[6]/div/div/div/div[2]/div[1]/form/div[3]/div[2]/ul/li/div/table/tbody/tr[3]/td[5]/button')).click();
        element(by.id('Description')).sendKeys(des);
        browser.sleep(3000);
    });

    it('Clicking on create project button  :',function() {

        element(by.css('button.btn.btn-lg.btn-main')).click();
        browser.sleep(5000);

    });

    it('Assertion', function(){

        browser.sleep(5000);
        var newProject = element(by.css('[title="new position"]'));
        expect(newProject.isPresent()).toEqual(true);
        browser.sleep(10000);
    });
});
创建_position_us.js

describe('create position for USA', function()
{
    it('while clicking dashboard button:', function () {

        browser.sleep(5000);
        element(by.css('span.icon-stats')).click();
        browser.sleep(3000);
    });


    it('while clicking create button:', function(){
        element(by.css('button.btn.btn-main.dropdown-toggle')).click();
    });

    it('while clicking create position button', function(){
        element(by.css(('[ng-click="openPositionModal($event)"]'))).click();
        browser.sleep(5000);
    });

    it('Sending position values:', function(){
        element(by.model('data.code')).sendKeys(pos_code_us);
        element(by.model('data.title')).sendKeys(pos_title);
        browser.sleep(3000);
        element(by.model('selectedProject')).sendKeys(select_project_name);
        browser.sleep(2000);
        element.all(by.css('a.ng-scope.ng-binding')).filter(function (a, index) {
            return a == 0;}).each(function (button) {
            a.click();})
        browser.sleep(2000);
    });

    it('Clicking Calender icon:', function(){


        element(by.css('a.ng-scope.ng-binding')).click()
        element(by.css('i[ng-click^=open]')).click();
        element(by.css('[ng-click="move(1)"]')).click();
        browser.sleep(1000);
        element(by.css('[ng-click="select(dt.date)"]')).click();
        browser.sleep(2000);
        element.all(by.css('i.icon-date.glyphicon')).click();
        browser.sleep(2000);
        element.all(by.css('button.btn.btn-default.btn-sm.pull-right')).filter(function (button, index) {
            return index == 1;
        }).each(function (button) {
            button.click();
            element.all(by.css('button.btn.btn-default.btn-sm.pull-right')).filter(function (button, index) {
                return index == 1;
            }).each(function (button) {
                button.click();
                element.all(by.css('button.btn.btn-default.btn-sm.pull-right')).filter(function (button, index) {
                    return index == 1;
                }).each(function (button) {
                    button.click();

                });
            });
        });
    });

    it('Sending No.of opening position:', function() {

        browser.sleep(2000);
        browser.driver.findElement
        (By.xpath('/html/body/div[6]/div/div/div/div[2]/div[3]/div[1]/div[1]/form/div[6]/ul/li/div/table/tbody/tr[3]/td[5]/button')).click();
        element(by.model('data.totalOpenings')).sendKeys('10');
        browser.sleep(5000);
    });

    it('Sending salary values:', function() {

        browser.sleep(5000);
        var salary =  element(by.model('data.ctc'));
            salary.isDisplayed().then(function(result) {
                if (result) {
                    salary.sendKeys('500000');
                } else {
                   element(by.model('data.ctc')).sendKeys('500000');
                }
            });
        //element(by.model('data.ctc')).sendKeys('500000');
        browser.sleep(3000);

    });

    it('While Selecting location for US:', function(){
        browser.sleep(3000);
        browser.driver.findElement(By.xpath('/html/body/div[6]/div/div/div/div[2]/div[3]/div[1]/div[1]/form/div[9]/div/div/div/div/input')).sendKeys('los a');
        browser.sleep(3000);
        element.all(by.css('a.ui-select-choices-row-inner')).filter(function (a, index) {
        return index == 0;
        }).each(function (a) {
        a.click();});
    });

    it('Sending position description:', function(){
        element(by.model('data.description')).sendKeys(des);
    });

    it('While clicking analyse skill button:', function(){
        element(by.css('[ng-click="analyzePosition($event)"]')).click();
        browser.sleep(10000);
    });

    it('Sending skill name and selecting the skills:', function() {
        element(by.model('userInput.skillName')).sendKeys('java');
        browser.sleep(1000);
        element.all(by.css("a.ng-scope.ng-binding")).filter(function (a, index) {
            return index == 2;
        }).each(function (a) {
            a.click();
        });
    });

    it('Selecting Percentage:', function() {
        element(by.model('userInput.skillPercent')).sendKeys('80');
        element(by.css('[ng-click="addSkills()"]')).click();
        browser.sleep(1000);
        browser.executeScript('window.scrollTo(250,0);');
        browser.sleep(2000);
    });

    it('Clicking on Preview button:', function(){
        browser.sleep(2000);
        browser.executeScript('window.scrollTo(250,0);');
        browser.sleep(2000);
        element(by.css('button[ng-click="fetchMatches($event)"]')).click();
        browser.sleep(15000);
    });

    it('Selecting Monster:', function() {
        element(by.css('[ng-click="$select.activate()"]')).click();  // Autosource
        browser.sleep(2000);
        element.all(by.css('a.ui-select-choices-row-inner')).filter(function (a, index) {
            return index == 0;
        }).each(function (a) {
            a.click();
        });
    });

    it('Selecting Carrer builder:', function() {
        element(by.css('[ng-click="$select.activate()"]')).click();// Autosource
        browser.sleep(2000);
        element.all(by.css('a.ui-select-choices-row-inner')).filter(function (a, index) {
            return index == 0;
        }).each(function (a) {
            a.click();
        });
    });

    it('Clicking on Internal groups button:', function() {
        element(by.css('button.dropdown-toggle.ng-binding.btn.btn-default')).click();
    });

    it('Unchecking internal groups button:', function(){
        element(by.css('[data-ng-click="deselectAll();"]')).click();
    });

    it('Unchecking checkbox:', function(){
        element(by.css('li.list-group-item.ng-binding.ng-scope')).click();
    });

    it('Unchecking check box', function() {

        element(by.model('data.score_autosourced_resumes')).click();
    });

    it('Clicking on autosource button:', function() {

        browser.sleep(5000);
        element.all(by.css('button.btn.btn-main')).filter(function (button, index) {
            return index == 1;
        }).each(function (button) {
            button.click();
            browser.sleep(15000);
        });
    });

    var newPositionLink = element(by.css('[title="Initial Status"]'));

    it('verify', function(){

        expect(newPositionLink.isPresent()).toEqual(true);
        browser.sleep(5000);
        var initial_count_before = element.all(by.css('span.badge.badge-default.ng-binding')).get(0).getText().then(function(text){console.log(text);})
        element(by.css('button[ng-click="autoSource()"]')).click();
        browser.sleep(10000);
});
});
config_values.js

pos_title = 'Python Developer'
project_name = 'AVR'
external_project_name = 'AVR tech'
select_project_name = "avr1"


url = browser.params.siteurl
user = browser.params.login.username
pwd = browser.params.login.password



des = "We're looking for a full stack web developer with between 2-5 years of professional experience.You will take on a central role in developing our products using Python and Django"
我正在终端执行如下测试:

sudo protractor conf.js --params.siteurl="http://localhost.com" --params.login.username="raghavendra@gmail.com" --params.login.password="123456"
HTML代码:

<html lang="en" ng-app="hireAlchamyApp" class="ng-scope">

正如@raghavendra所指出的,
rootElement
已在配置的顶层指定:

exports.config = {
    rootElement: "div"
},

@raghavendra t,如html中所示,必须如下设置根元素:

rootElement: '.ng-scope', 
exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: {
    'browserName': 'firefox'
  },

  onPrepare: function() {
      browser.driver.manage().window().maximize();
      protractor.basePath = __dirname;

  },
  suites : {
  qa:   ['./specs/log_in.js','./specs/create_project_external_roles.js','./specs/create_position_us_roles.js',

 beta:   ['./specs/log_in_beta.js','./specs/create_position.js', './specs/candidate_status.js'],

  },

  jasmineNodeOpts: {
      defaultTimeoutInterval: 3000000,
      allScriptsTimeout: 3000000,
      showColors: true
  },
  rootElement: '.ng-scope', 
  baseUrl: '',
};
因此,您的配置文件如下所示:

rootElement: '.ng-scope', 
exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: {
    'browserName': 'firefox'
  },

  onPrepare: function() {
      browser.driver.manage().window().maximize();
      protractor.basePath = __dirname;

  },
  suites : {
  qa:   ['./specs/log_in.js','./specs/create_project_external_roles.js','./specs/create_position_us_roles.js',

 beta:   ['./specs/log_in_beta.js','./specs/create_position.js', './specs/candidate_status.js'],

  },

  jasmineNodeOpts: {
      defaultTimeoutInterval: 3000000,
      allScriptsTimeout: 3000000,
      showColors: true
  },
  rootElement: '.ng-scope', 
  baseUrl: '',
};

您是否尝试过按照规定将“rootElement”设置为“jasmineNodeOpts”范围之外?您是否将任何值传递给--baseUrl?你能添加html吗?@flaviomeira10请查看所有文件并帮助我。如果我单独运行每个文件,它工作正常。请帮帮我。@raghavendrat您能展示一下您正在执行的测试吗?如何执行测试?谢谢。我也发布了所有的文件和执行步骤。请查看所有文件并帮助我。从1周起,我将面临此问题,无法解决此问题。请帮帮我。@raghavendrat您的根元素是什么?是第一节吗?还是别的什么?可以指定根元素的确切路径,以便量角器知道它在检查什么(根元素应该有css选择器语法)。Thanks@GirishSortur这是html代码:请帮助me@raghavendrat您要查找的
根元素是什么?你能在你的问题中发布html吗?如上所述,尝试将rootelement设置为更确定的值。谢谢