2015-05-17 87 views
2

我試圖去控制位於另一個框架內的框架內的框架內。量角器iframe內iframe內的iframe

最後(最深)的框架只用於登錄 - 我設法做。

問題是,登錄後,我基本上需要返回到上部框架,然後單擊按鈕。出於某種原因我不斷收到錯誤:

NoSuchElementError: no such element

順便說一下,幀中的所有代碼都是非角度的。

這是我的測試代碼:

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); 
}); 

回答

2

The problem is that after the login I basically need to return to the upper frame and click a button.

從我在你的代碼中看到,你切換到默認的內容,但是,如你所說,按鈕是上肢內側iframe,切換到它:

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

正如往常一樣。謝謝! – user2880391

0

您可以嘗試這可能是這可以幫助你..因爲這對我來說,處理不同的窗口。 。

browser.getAllWindowHandles(),然後(函數(手柄){

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); 
    }); 
}); 

});

+0

這不是關於窗戶,而是窗戶。 – alecxe

0

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

嘗試給iframe的位置,你想切換..也許有幫助。

//切換到上下文的iframe爲了看到裏面的iframe browser.switchTo()幀(元素(by.tagName( 'IFRAME')));