Невозможно переключиться на фрейм, используя ранее найденный веб-элемент с фреймом (веб-элемент)

При попытке переключить кадр 2 с помощью метода frame(webelement) я получаю сообщение об ошибке

Элемент принадлежит другому кадру, отличному от текущего

Моя тестовая веб-страница имеет 2 имени фрейма: FrameOne и FrameTwo с одним текстовым полем в каждом фрейме.. в 1-м фрейме как имя 1 и текстовое поле во 2-м фрейме как имя 2.

driver.navigate().to("file:///D:/Study%20material/8850OS_Code/Chapter%203/HTML/Frames.html");


/***********By id***********************/
driver.switchTo().frame(1);   //identify 2nd frame sucessfully
WebElement Textbox2=driver.findElement(By.name("2"));  //webelement in 2nd frame
Textbox2.sendKeys("Hi Vivek");
driver.switchTo().defaultContent();
driver.switchTo().frame(0).findElement(By.name("1")).sendKeys("Hello selenium");
driver.switchTo().defaultContent();
/***

/***********By WebElement***********************/
driver.switchTo().frame(Textbox2);  ---> this line throws error
Textbox2.sendKeys("Hi John");
driver.switchTo().defaultContent();
driver.switchTo().frame(0).findElement(By.name("1")).sendKeys("Hello selenium");

Подскажите, пожалуйста, как именно работает этот метод или где я делаю ошибку.


person Vivek    schedule 21.09.2016    source источник
comment
Что это за язык? добавьте нужный тег   -  person Saeid    schedule 21.09.2016
comment
Не могли бы вы также поделиться HTML-кодом ?? И уточните, чего вы хотите добиться на самом деле??   -  person Saurabh Gaur    schedule 21.09.2016
comment
Saurabh, я хочу переключиться на frame2, используя ранее расположенный веб-элемент frame2.   -  person Vivek    schedule 22.09.2016


Ответы (2)


Вы не можете использовать textbox2 для переключения на фрейм. Перегрузка веб-элемента для фрейма для поиска элемента iframe, как и любого другого элемента.

WebElement iframe= driver.findElement(By.id(iframe));

driver.switchTo().frame(iframe);
person vins    schedule 21.09.2016

Попробуйте этот код. Это сработало для меня...

driver.navigate().to("file:///D:/Study%20material/8850OS_Code/Chapter%203/HTML/Frames.html");

/***********By id***********************/

WebElement ifrm1= driver.findElement(By.id("FrameOne")); 
WebElement ifrm2= driver.findElement(By.id("FrameTwo"));
driver.switchTo().frame(ifrm2);   //identify 2nd frame sucessfully
WebElement Textbox2=driver.findElement(By.name("2"));  //webelement in 2nd frame
Textbox2.sendKeys("Hi Vivek");
driver.switchTo().frame(ifrm1); // Switch Back to FrameOne
driver.findElement(By.name("1")).sendKeys("Hello selenium");


/***********By WebElement***********************/
driver.switchTo().frame(Textbox2);       

В приведенной выше строке выдается ошибка, поскольку «TextBox2» не является элементом фрейма.

Дополнительную информацию о фреймах можно найти по адресу https://www.seleniumeasy.com/selenium-tutorials/how-to-work-with-iframes-in-selenium-webdriver

Надеюсь, это полезно

person Prajesh A R    schedule 22.09.2016
comment
Привет, Праджеш, по вашему мнению, мы должны указать веб-элемент кадра в методе switchto().frame(Webelemnt), но согласно документации, насколько я понимаю, мы можем выбрать кадр, используя его ранее расположенный веб-элемент. вот почему я передал Textbox2, так как его ранее расположенный веб-элемент в кадре2. Пожалуйста, исправьте меня - person Vivek; 22.09.2016
comment
Приносим извинения за поздний ответ. Да, вы должны указать веб-элемент фрейма или номер/имя фрейма. это объясняется в ссылке, упомянутой выше. - person Prajesh A R; 29.09.2016