2013-12-17 52 views
0

頁眉部分編輯如何處理2個I幀具有相同的類名

<iframe class="wysihtml5-sandbox" width="0" height="0" frameborder="0" security="restricted" allowtransparency="true" marginwidth="0" marginheight="0" style="display: inline-block; min-height: 160px;;"> 
<!DOCTYPE html> 
<html> 
<head> 
<body class="wysihtml5-editor" contenteditable="true" spellcheck="true" style="overflow: hidden; min-height: 0px; background-color:;: rgb(255, 255, 255"> 
</html> 
</iframe> 
</div> 
<div class="p-help-block"></div> 
</div> 
</div> 

頁腳部分編輯

<iframe class="wysihtml5-sandbox" width="0" height="0" frameborder="0" security="restricted" allowtransparency="true" marginwidth="0" marginheight="0" style="display: inline-block; min-height: 160px; background-color: rgb(255, 255, 255> 
<!DOCTYPE html> 
<html> 
    <head> 
    <body class="wysihtml5-editor" contenteditable="true" spellcheck="true" style="overflow: hidden; min-height: 0px; background-color: rgb(255, 255, 255"> 
    </html> 
    </iframe> 
    </div> 
    <div class="p-help-block"></div> 
    </div> 

我可以能夠通過下面的代碼

進入頭部段編輯文本
driver.findElement(By.id("div_1_1_3_1_3_1_2_1_1_1_1")) ; 
driver.switchTo().frame(driver.findElement(By.className("wysihtml5-sandbox"))); 
System.out.println("inside the header frame"); 
driver.findElement(By.className("wysihtml5-editor")).sendKeys("header section quote approval details"); 

Thread.sleep(10000); System.out.println(「在標題框內輸入的文本」);

但webdriver的控制不導航到頁腳部分編輯器輸入文本使用下面的代碼,我試圖

driver.findElement(By.id("div_1_1_3_1_2_1_1_1_1_1_4-in")).click(); 
Thread.sleep(5000); 
System.out.println("inside the footer frame"); 
Thread.sleep(10000); 
driver.findElement(By.className("wysihtml5-editor")).sendKeys("footer section quote approval details"); 
System.out.println("entered text inside footer frame"); 

注:請讓我知道了這個解決方案,因爲我在很多階段面臨着同樣的問題在我的應用程序,我正在做自動化使用硒webdriver

回答

0

您也可以用IFRAME指數嘗試像以下:

driver.switchTo().frame(0); //To switch to first iframe 
//Few actions 
driver.switchTo().frame(1); //To switch to second iframe 
4

使用XPath表達式來找到。

對於第一種:

driver.findElement(By.xpath("//iframe[@class='wysihtml5-sandbox'][1]")); 

對於第二個:

driver.findElement(By.xpath("//iframe[@class='wysihtml5-sandbox'][2]")); 

另外,要求開發人員在id添加到不同的內部框架,這樣你就可以區分它們。這將比上面的XPath解決方案更優雅,因爲這意味着即使將更多的內置頁面添加到文檔中,您的測試仍然可以繼續工作。

+1

我upvoted這一個事實,即與開發商合作,以獲得IDS真的是你最好的選擇,如果在所有可能的。 –

相關問題