2017-01-22 40 views
0

從窗口切換到iframe時出錯並出現錯誤未找到iframe標識。從窗口切換到iframe時獲取錯誤

腳本錯誤越來越TestNG中

click(locator.login_link); 

//上點擊我得到的iFrame窗口打開在幾秒鐘內

driver.switchTo().frame("GTM-WDM67TP"); 

//交換通過傳遞ID

設置爲iFrame窗口
click(locator.login_email); 

//點擊iframe窗口上的元素

源代碼

<!-- inject:css --> 
    <link rel="stylesheet" href="assets/styles/user/main.css"> 
    <!-- endinject --> 
</head> 

    <body class="mini-navbar"> 
    <!-- Google Tag Manager (noscript) --><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WDM67TP" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
      <!-- End Google Tag Manager (noscript) --> 
      <div ui-view="mainView" ng-class=""></div> 
    <!-- inject:js --> 
    <script src="scripts/vendor/jquery-2.1.1.min.js"></script> 
    <script src="scripts/vendor/angular.min.js"></script> 
    <script src="scripts/vendor/inspiniaApp.js"></script> 
    <script src="scripts/vendor/bootstrap.min.js"></script> 
    <script src="app.js"></script> 

回答

1

以下是不同的方式切換到所需的框架:

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src, 'GTM-WDM67TP')]"))); 

或者

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@src='https://www.googletagmanager.com/ns.html?id=GTM-WDM67TP')]"))); 

如果它是在第一幀頁面,然後使用索引屬性,您可以嘗試以下內容:

driver.switchTo().frame(0); 

driver.switchTo().frame(driver.findElement(By.tagName("iframe"))); 

ID屬性不爲該幀所定義。

+0

沒有此xpath不起作用。你能否以另一種方式建議? –

+0

可以有很多其他的方法。我已經更新了我的答案並提及了一些選項。但是,如果它是可公開訪問的用戶界面,請您分享一下詳細信息,以便我們可以找出究竟哪一個適用於您的案例? – Mahipal

+0

感謝它現在的作品。它通過傳遞1而不是0來處理索引屬性,而只有1個iframe存在於索引屬性中。 –

相關問題