2013-12-17 2 views
0

Заголовок секции редактораКак обрабатывать 2 плавающие фреймы с именем того же класса

<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> 

Footer раздел редактора

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

Примечание: пожалуйста, дайте мне знать решение для этого, как я столкнулся такая же проблема во многих фазах в моей заявке, которую я делаю автоматизацией, используя selenium 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 это за то, что работа с разработчиками, чтобы получить Идентификаторы действительно ваш лучший выбор, если вообще возможно. –

Смежные вопросы