Tidak dapat beralih ke bingkai menggunakan elemen web yang ditemukan sebelumnya dengan bingkai (Webelement)

Saat mencoba mengganti frame 2 melalui metode frame(webelement), saya mendapatkan kesalahan seperti

Elemen milik bingkai yang berbeda dari yang sekarang

Contoh halaman web saya memiliki 2 bingkai dengan nama sebagai FrameOne dan FrameTwo dengan satu kotak teks di setiap bingkai.. di bingkai pertama sebagai nama 1 dan kotak teks di bingkai ke-2 sebagai nama 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");

Tolong beritahu saya bagaimana sebenarnya metode ini bekerja atau di mana saya melakukan kesalahan.


person Vivek    schedule 21.09.2016    source sumber
comment
Bahasa apa ini? tambahkan tag yang tepat   -  person Saeid    schedule 21.09.2016
comment
Bisakah Anda membagikan kode HTML juga?? Dan tentukan apa sebenarnya yang ingin Anda capai??   -  person Saurabh Gaur    schedule 21.09.2016
comment
Saurabh, saya ingin beralih ke frame2 menggunakan elemen web frame2 yang sebelumnya terletak.   -  person Vivek    schedule 22.09.2016


Jawaban (2)


Anda tidak dapat menggunakan textbox2 untuk beralih ke bingkai. Elemen web membebani bingkai untuk menemukan elemen iframe seperti elemen lainnya.

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

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

Coba kode ini. Itu berhasil untuk saya...

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

Baris di atas memunculkan kesalahan karena "TextBox2" bukan Elemen Bingkai

Info selengkapnya tentang bingkai dapat ditemukan di https://www.seleniumeasy.com/selenium-tutorials/how-to-work-with-iframes-in-selenium-webdriver

Semoga bermanfaat

person Prajesh A R    schedule 22.09.2016
comment
Hai Prajesh, menurut Anda, apakah kita harus memberikan elemen web bingkai dalam metode switchto().frame(Webelemnt) tetapi sesuai dokumentasi, pemahaman saya adalah, kita dapat memilih bingkai menggunakan WebElement yang berlokasi sebelumnya. itu sebabnya saya melewati Textbox2 karena elemen webnya sebelumnya terletak di frame2. tolong perbaiki saya - person Vivek; 22.09.2016
comment
Maaf karena terlambat merespons. Ya, Anda harus menentukan elemen web bingkai atau nomor/nama bingkai. itu dijelaskan dalam tautan yang disebutkan di atas. - person Prajesh A R; 29.09.2016