Тестовый пример транспортира для более чем 100, но передавая строку из HTML - PullRequest
0 голосов
/ 28 сентября 2018

Как изменить строку в целое число в транспортире.Мы не можем понять проблему, иногда она дает правильные результаты, а иногда - неправильные.Нужна помощь ... Спасибо

app.e2e-spec.ts:

import {AppPage} from "./app.po";
import { saveAs } from 'file-saver/FileSaver';
import {browser, by, element, protractor} from "protractor";


describe('The Right Doctor Test Report ', function() {
    let page: AppPage;
    browser.waitForAngularEnabled(false);

    let linksArray:string[]=[];
    let imagesArray:string[]=[];
    let videosArray:string[]=[];
    let socialArray:string[]=[];
    beforeEach(() => {
        page = new AppPage();
    });

    it('Get All Home Page Test ', () => {
       /* page.navigateTo();*/
        browser.get('http://localhost:4200/');
        browser.driver.manage().window().maximize();
        browser.sleep(10000);
        //find all links
        let linkCount = element.all(by.css('.testChecking'));
        //here you click each of the links:
        linkCount.each(function(elem,index){
            elem.getAttribute('href').then(function(link){
                if(link!=null)
                    linksArray.push(link);
            });
        });
    });

        it('Single Video Page Test Cases: ', () => {
            for(let i=0;i<linksArray.length;i++) {
                browser.get(linksArray[i]).then(()=> {
                    // total views should be greater than 100
//expect(element(by.css('.sviews')).getText()).not.toBeLessThan(100);
expect(parseInt(element(by.css('.sviews')).getText())).not.toBeLessThan(100);
                });
                browser.sleep(1000);
            }
        });

});

транспортир.conf.js

// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

const { SpecReporter } = require('jasmine-spec-reporter');
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome',
    // For Travis CI only
    chromeOptions: {
      binary: process.env.CHROME_BIN,
      args: ['--no-sandbox']
    }
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 300000,
    print: function() {}
  },
  onPrepare: function() {
    jasmine.getEnv().addReporter(
        new Jasmine2HtmlReporter({
          savePath: './screenshots/'
        })
    );
    jasmine.getEnv().addReporter(new Jasmine2HtmlReporter({
      savePath: './screenshots/',
      screenshotsFolder: 'images',
      takeScreenshots: true,
      consolidateAll: true,
      cleanDestination: true,
      //takeScreenshotsOnlyOnFailures: true,
      //showPassed: false,
      fileName: 'TestReport'
    }));
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
};

Если я не использую parseInt, то:

53 просмотра и 111 просмотров enter image description here

40 просмотров и 200 просмотров enter image description here

111 просмотров и 47 просмотров enter image description here

40 просмотров и 50 просмотров enter image description here

Если я напишу parseInt, то будет показан результат ниже. Вывод:

138 просмотров и 340 просмотров enter image description here

47 просмотров и 340 просмотров enter image description here

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Если вы точно знаете, что ваша строка всегда будет в форме целого числа, вы можете использовать оператор унарный плюс , чтобы немного упростить код вместо parseInt.Вы могли бы просто сделать это

element(by.css('.sviews')).getText()
    .then(function(num) {
        expect(+num).not.toBeLessThan(100);
    });
0 голосов
/ 28 сентября 2018

Вы ожидаете, что .getText() вернет строку.Это на самом деле возвращает обещание, которое должно быть выполнено.Использование await для разрешения обещания перед тестированием должно дать вам необходимые результаты.

let str = await element(by.css('.sviews')).getText();
let num = parseInt(str);
await expect(num).not.toBeLessThan(100);

Еще одна идея, которая может сработать, - проверить длину, а не число.Любое число меньше 100 будет иметь длину 1 или 2 цифры, в то время как больше 100 будет 3 или более цифрами.Строка регулярного выражения .{3,} будет проходить, только если в строке 3 или более символов.

expect(element(by.css('.sviews')).getText()).toMatch(/.{3,}/);
...