iframe里面的iframe里面的量角器iframe

时间:2015-05-17 13:27:33

标签: testing iframe protractor angularjs-e2e end-to-end

我试图控制位于另一个框架内的框架内的框架内的控件。

最后一个(最深的)框架仅用于登录 - 我设法做到了。

问题是登录后我基本上需要返回上框并单击按钮。出于某种原因,我不断收到错误:

  

NoSuchElementError:没有这样的元素

BTW,帧中的所有代码都是非角度的。

这是我的测试代码:

it('Should get to drive sample app', function () {
  login.get();
  login.clickLogin();

  browser.ignoreSynchronization = false;

  login.goToUsecases();  //getting to the page
  $('[href="/developers/api/1542"]').click();
  browser.sleep(5000);
  //iframe issue starts here
  browser.switchTo().frame(0);
  browser.ignoreSynchronization = true;
  browser.switchTo().frame(0);
  browser.switchTo().frame(0);

  browser.driver.findElement(by.id('userName_str')).sendKeys("username");
  browser.driver.findElement(by.id('password')).sendKeys("password");
  browser.driver.findElement(by.name('submit')).click();

  // login succeeded 
  browser.sleep(10000);
  browser.driver.switchTo().defaultContent();

  browser.driver.findElement(by.id('home')).click();
  browser.sleep(10000);
});

3 个答案:

答案 0 :(得分:2)

  

问题是登录后我基本上需要返回上框并单击按钮。

从我在你的代码中看到的,你正在切换到默认内容,但正如你所说,按钮在上面的iframe中,切换到它:

browser.driver.switchTo().defaultContent();
browser.switchTo().frame(0);
browser.driver.findElement(by.id('home')).click();

答案 1 :(得分:0)

你可以尝试这可能会对你有所帮助..因为这对我来说可以处理不同的窗口。

browser.getAllWindowHandles()。then(function(handles){

newWindowHandle = handles[1];

browser.ignoreSynchronization = true;

browser.switchTo().window(newWindowHandle).then(function () {

    browser.sleep(500).then(function () {
        browser.ignoreSynchronization = true;

        browser.driver.findElement(by.id('userName_str')).sendKeys("username");

        browser.driver.findElement(by.id('password')).sendKeys("password");

        browser.driver.findElement(by.name('submit')).click();

//登录成功         });

    //to close the current window
    browser.driver.close().then(function () {
        //to switch to the previous window
        browser.switchTo().window(handles[0])
        browser.driver.findElement(by.id('home')).click()
        browser.sleep(10000);
    });
});

});

答案 2 :(得分:0)

而不是:: browser.switchTo()。frame(0);

尝试给你想要切换的iframe的位置..这可能会有所帮助。

//切换到iframe上下文以查看iframe内部 。browser.switchTo()帧(元素(by.tagName(' iframe中')));