尝试通过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");
请告诉我这种方法的确切运作方式或错误的地方。
答案 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
希望它有用