使用量角器测试 iframe 有点棘手。我花了一段时间和很大的耐心才弄明白发生了什么。我希望这有帮助!
Protrator 是基于 WebdriverJS 构建的,因此您可以使用整个包来测试 iframe。当您开始使用量角器进行测试时,您要做的第一件事就是获取量角器的实例:
var ptor = protractor.getInstance();
但是要测试你在 iframe 中的内容,你需要 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');
});
});