Невозможно войти в ifralme AngularJs в неугловом приложении-Protracor - PullRequest
0 голосов
/ 16 октября 2018

Я перепробовал множество предложений от stackoverflow, уже решивших этот вид проблемы, но не смог заставить его работать.Использование последней версии Chrome и драйвера в Windows env.Могут ли эксперты подойти и решить мою проблему?По-настоящему признателен.

describe('tutorial point non-angular to angular frame login', function() {
var username = element(by.id('username'));
var password = element(by.id('password'));
var loginform = element(by.id('form'));
beforeEach(function() {
browser.waitForAngularEnabled(false);
browser.get('https://www.tutorialspoint.com/angularjs/angularjs_login_application.htm');
browser.manage().window().maximize();
}); 

it('should be to switch non-angular to angular iframe and login', function(){
    //var EC = protractor.ExpectedConditions;
    //browser.wait(EC.visibilityOf($('iframe.result')), 20000);
    //browser.switchTo().defaultContent();
    browser.switchTo().frame(0);
    //browser.switchTo().frame(element(by.css('iframe.result'))); // switching to angular iframe
    //browser.waitForAngularEnabled(true); 
    //browser.waitForAngular(); 
    //browser.sleep(4000);
    //browser.wait(EC.visibilityOf(username), 20000);
    username.sendKeys("test");  // tried xpath, css-selector, but no luck, 
                                // probably iframe is not recgnised as AngularJs enabled           
});
}); 
ERRR:   
Message:
Failed: No element found using locator: By(css selector, *[id="username"])
Stack:
NoSuchElementError: No element found using locator: By(css selector, * 
[id="username"])

HTML: Please refer to URL as it is public

Примечание. Использование python и selenium прекрасно работает с теми же локаторами.Я полагаю, локатор не проблема.

1 Ответ

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

Я провел эксперимент на сайте toolsqa.Вот тест, надеюсь, это поможет.Просто адаптируйте его под свои нужды.

 it('should dummy', async (done) => {
        let b = element(by.xpath('//a[text()=\'Hello world!\']'));
        await browser.waitForAngularEnabled(false);
        await browser.get('http://toolsqa.com/iframe-practice-page/');


        await browser.switchTo().frame(element(by.id('IF2')).getWebElement());
        console.log('expecting element frame.');
        expect(await b.isDisplayed()).toBe(true);
        done();
    });
...