无法使用之前找到的带框架的Webelement(Webelement)切换到框架

时间:2016-09-21 13:42:02

标签: iframe selenium-webdriver

尝试通过frame(webelement)方法切换第2帧时,我收到错误

  

元素属于与当前帧不同的帧

我的示例网页有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");

请告诉我这种方法的确切运作方式或错误的地方。

2 个答案:

答案 0 :(得分:0)

您不能使用textbox2切换到框架。框架的webelement重载以定位iframe元素,就像任何其他元素一样。

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

driver.switchTo().frame(iframe);

答案 1 :(得分:0)

试试这段代码。它对我有用......

driver.navigate()。为了("文件:/// d:/Study%20material/8850OS_Code/Chapter%203/HTML/Frames.html");

/ ***********来自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);       

以上行抛出错误为#34; TextBox2"不是框架元素

有关框架的更多信息,请访问https://www.seleniumeasy.com/selenium-tutorials/how-to-work-with-iframes-in-selenium-webdriver

希望它有用