ไม่สามารถสลับไปที่เฟรมโดยใช้ webelement ที่พบก่อนหน้านี้พร้อมเฟรม (Webelement)

เมื่อพยายามสลับเฟรม 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 โดยใช้ webelement ของ i.e frame2 ที่มีอยู่ก่อนหน้านี้   -  person Vivek    schedule 22.09.2016


คำตอบ (2)


คุณไม่สามารถใช้ textbox2 เพื่อสลับไปที่เฟรมได้ webelement โอเวอร์โหลดสำหรับเฟรมเพื่อค้นหาองค์ประกอบ 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
สวัสดี Prajesh ตามที่คุณต้องการ เราต้องให้ frame webelement ในวิธี switchto().frame(Webelemnt) แต่ตามเอกสารประกอบความเข้าใจของฉันคือ เราสามารถเลือกเฟรมโดยใช้ WebElement ที่ตั้งไว้ก่อนหน้านี้ นั่นเป็นสาเหตุที่ฉันส่ง Textbox2 เนื่องจากองค์ประกอบเว็บที่อยู่ก่อนหน้านี้ใน frame2 โปรดแก้ไขฉันด้วย - person Vivek; 22.09.2016
comment
ขออภัยที่ตอบช้า. ใช่ คุณต้องระบุองค์ประกอบเว็บของเฟรมหรือหมายเลข/ชื่อเฟรม มันอธิบายไว้ในลิงค์ที่กล่าวถึงข้างต้น - person Prajesh A R; 29.09.2016