2016-09-21 51 views
0

在尝试通过帧切换帧2(webelement)方法,我正在误差作为不能够切换使用其先前发现webelement与帧到帧(Webelement)

元属于不同的帧比当前一个

我的样品的网页上具有2个帧的名称作为FrameOne和FrameTwo在每个帧中的一个文本框..在第一帧为名称1和在第二帧文本框作为名称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"); 

请告诉我这种方法究竟是如何工作的,或者我犯了什么错误。

+0

什么语言是什么?添加适当的标签 – Tempux

+0

你能分享HTML代码吗?并指定你想实现什么? –

+0

Saurabh,我想要使用其以前位于webelement的frame2来切换到frame2。 – Vivek

回答

0

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

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

driver.switchTo().frame(iframe); 
0

试试看看这个代码。它适用于我...

driver.navigate()。(“file:/// 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);  

的上面一行抛出错误为“TextBox2中”不是一个框架元素上的框架

更多信息,可以在https://www.seleniumeasy.com/selenium-tutorials/how-to-work-with-iframes-in-selenium-webdriver找到

希望它有帮助

+0

嗨Prajesh,根据你,我们是否必须在switchto().frame(Webelemnt)方法中给框架webelement,但根据我的理解,我们可以使用它以前定位的WebElement来选择一个框架。 这就是为什么我通过Textbox2,因为它以前在frameeplementeplementplease纠正我 – Vivek

+0

迟到的道歉反应迟。是的,您必须指定框架webelement或框架编号/名称。它在上面提到的链接中解释。 –