2

Я смог обработать это в Java, но пока я могу открыть веб-страницу только с помощью jasmine js. В java все ссылки привязывающего тега могут быть сохранены в списке, а затем каждую ссылку можно перемещать с помощью объекта драйвера браузера. Но в jasmine js я не могу сохранить эти ссылки в массиве. Вот что я пытался сделать:тестирование всех ссылок на странице с помощью транспортира

describe('demo', function() 
{ 
    it('mydemo', function() 
    { 
    browser.ignoreSynchronization = true; 
    browser.driver.get('https://www.google.co.in'); 
    var array = []; 
    array.push(browser.findElement(by.xpath("//a[@href]"))); 

    for(var i=0; i<array.length; i++) 
    { 
     expect(browser.navigate().to(array[i])); 
    } 
    } 
} 

Новое окно браузера всплывает, переходит в Google и затем закрывается. Кажется, есть проблема с тайм-аутом. Используя browser.ignoreSynchronization = true, сервер игнорирует его как угловое приложение, но все же проблемы с таймаутом сохраняются. Какие-либо предложения?

ответ

0

См. Следующий код.

$$('a').map(function(link) { 
    return link.getAttribute("href").then(function (href) { 
     return href.replace(/https\:\/\/app\.perflectie\.nl\//g, localhost); 
    }); 
}).then(function(links) { 
    links.forEach(function(link) { 
     browser.get(link); 
     expect(browser.getCurrentUrl()).not.toContain('/Error/'); 
    }); 
}); 

Для получения дополнительной информации перейдите по ссылкам.

Link 1

Link 2

Надеется, что это помогает. :)

+0

браузер отключается после перехода на Google – wolfsbane

0
it('link elements', function() { 
    browser.ignoreSynchronization = true; 
    browser.get('https://www.google.co.in'); 
    element.all(by.tagName('a')).each(function (elem) { // this is the important step, rest you can do whatever you want inside this 
     elem.getText().then(function (val) { 
      console.log('@@@@ : ' + val) 
     }) 
    }) 
}); 
1

Чтобы получить все ссылки, вызовите getAttribute на ElementArrayFinder. Он вернет Promise, который после разрешения даст вам все ссылки. Затем вызовите filter исключить динамические ссылки (href="javascript:...) и forEach итерировать каждую ссылку:

browser.ignoreSynchronization = true; 

$$("a[href]").getAttribute("href") 
    .then(links => links 
    .filter(link => !/^javascript/.test(link)) 
    .forEach(link => { 
     console.log(link); 
     browser.driver.get(link); 
    }) 
); 

Другой и более быстрый способ, чтобы получить все ссылки с выполнения сценария с помощью одного вызова в браузере:

browser.ignoreSynchronization = true; 

browser.driver.executeScript("return [].map.call(document.links, function(e){return e.href})") 
    .then(links => links 
    .filter(link => !/^javascript/.test(link)) 
    .forEach(link => { 
     console.log(link); 
     browser.driver.get(link); 
    }) 
); 
Смежные вопросы