Найти элемент динамически на приборной панели - PullRequest
0 голосов
/ 17 декабря 2018

Я ищу решение или, по крайней мере, руководство о том, как динамически находить элементы на панели инструментов, а затем обновлять содержимое внутри Hashmap.Я пишу в javascript - шутка - кошмар.На сегодняшний день я фактически обновил все элементы в карте, а затем запустил цикл (forEach) и искал их на экране, используя существующий метод.Как я уже говорил, я ищу более эффективный способ, например, запуск на экране и поиск элементов, а затем я хочу вставить их в Hashmap.Вот пример, который я делаю сегодня:

describe('Elements visibility', () => {
    let visibleSelector = {
        'username': '[name = "username"]',
        'password': '[name = "password"]',
        'forgotPassword': 'a[href="div.forgotPassword"]',
        'signUp': 'a[href="div.newUserText"]'
    };

    let selectorInputs = Object.keys(visibleSelector);
    selectorInputs.forEach(selector =>{
        it(format('Elements visibility: %s',selector), (done) => {
            nightmare.exists( visibleSelector[selector]).then(function (elementExists) {
               if (elementExists){
                console.log('Element exists on page');
               }
               else {
                   console.log('Element doesnt exists on page')
               }

            });
            done();
        });

    });

});

После поиска я нашел метод document.queryselectAll, который решает проблему поиска элементов на странице.В любом случае, после нескольких попыток я так и не смог получить то, что хотел.когда я печатаю в console.log (document), я получаю документ, который не определен.Я думаю, это связано с электроном nightmar.js.Я был бы счастлив с кем-то, кто может помочь мне с этим вопросом.Я прилагаю новый код, который я написал:

describe('overviews',  () => {

beforeEach(  (done) => {
    nightmare.goto('https://dashboard-staging.pixoneye.com/#/login');
    nightmare.exists('[text="See the Full Picture"]');
    nightmare.url().then(url => {
        expect(url).toEqual('https://dashboard-staging.pixoneye.com/#/login');
        done();
    });
});

afterAll((done) =>{
    nightmare.end();
    done();
});
describe('test', function() {

    console.log(document);
    let pageElements = [].slice.call(document.querySelectorAll('.loginForm'));
    for (let i = 0; i < pageElements.length; i++) {
        it('should ', (done) => {
            let elementInputs = pageElements[i];
            nightmare.exists(elementInputs);
            console.log(elementInputs);
            done();

        });
    }

});
});
...