Тестирование iframe с транспортиром немного сложно. Мне потребовалось время и много терпения, чтобы понять, что происходит. Надеюсь, это поможет!
Protrator построен на WebdriverJS, поэтому вы можете использовать весь пакет для тестирования iframes. Когда вы начинаете испытывать с транспортиром, то первое, что вам сделать, это получить экземпляр транспортира:
var ptor = protractor.getInstance();
Но чтобы проверить, что у вас есть внутри фрейма вы будете нуждаться в ptor.driver вместо PTOR!
var driver = ptor.driver;
Затем, когда вы начнете писать тест, вы найдете IFRAME, вы переключитесь на него, вы проверить его с «водителем», и вы переключитесь обратно к исходному кадру.
ptor.switchTo().frame(driver.findElement(protractor.By.xpath('xpath-to-iframe')));
// Test iframe with driver
driver.findElement(protractor.By.xpath('some-sort-of-input')).sendKeys('username');
driver.findElement(protractor.By.xpath('other-sort-of-input')).sendKeys('password');
driver.findElement(protractor.By.xpath('other-sort-of-button')).click();
// Switch back to Default Content
ptor.switchTo().defaultContent();
// And WAIT for angular!!
ptor.waitForAngular();
код, который следует это общий пример того, что я уже упоминал выше:
describe('Protractor iframe Test', function(){
var ptor, driver;
beforeEach(function(){
ptor = protractor.getInstance();
driver = ptor.driver;
});
it('should test the iframe', function(){
ptor.switchTo().frame(driver.findElement(protractor.By.xpath('xpath-to-iframe')));
// Test iframe with driver
driver.findElement(protractor.By.xpath('some-sort-of-input')).sendKeys('username');
driver.findElement(protractor.By.xpath('other-sort-of-input')).sendKeys('password');
driver.findElement(protractor.By.xpath('other-sort-of-button')).click();
// At this point, you can expect() things to happen to the iframe app
// Switch back to Default Content
ptor.switchTo().defaultContent();
// And WAIT for angular!!
ptor.waitForAngular();
// Then you can keep testing (or expecting something!)
expect('this answer').toBe('useful');
});
});
, наконец, после многих поисков, это решение работает для меня. Спасибо –