在Selenium Webdriver中切换帧,C#

时间:2013-05-22 21:51:19

标签: selenium webdriver frames

我使用Selenium收到此错误: WebDriver.dll

中发生了未处理的“System.InvalidOperationException”类型异常

其他信息:'[JavaScript错误:“a为空”{file:“file:/// C:/Users/jzhu/AppData/Local/Temp/anonymous1925480623.webdriver-profile/extensions/fxdriver@googlecode。 com / components / command_processor.js“line:7509}]'调用方法时:[nsICommandProcessor :: execute]

以下是此部分的代码:

ffbrowser.FindElement(By.XPath( “// TD [4] / A”))点击();

                            Thread.Sleep(1000);

                            ffbrowser.SwitchTo().Frame("content");

                            Thread.Sleep(1000);

                            ffbrowser.SwitchTo().Frame("NavBar");

                            Thread.Sleep(500);

                            ffbrowser.FindElement(By.XPath("//td[12]/a/div/img")).Click();

                            Thread.Sleep(800);

                            InputSimulator.SimulateKeyPress(VirtualKeyCode.RETURN);

                            Thread.Sleep(2000);

                            InputSimulator.SimulateTextEntry(@"Tostring.pdf");

                            Thread.Sleep(1500);

                            InputSimulator.SimulateKeyPress(VirtualKeyCode.RETURN);

                            Thread.Sleep(3500);

                            //ffbrowser.Navigate().Refresh();

                            //ffbrowser.SwitchTo().DefaultContent();


                            ffbrowser.Navigate().Back();
                            //InputSimulator.SimulateKeyPress(VirtualKeyCode.BROWSER_BACK);

                            Thread.Sleep(1000);

                            InputSimulator.SimulateKeyPress(VirtualKeyCode.RETURN);

                            Thread.Sleep(1000);

                            InputSimulator.SimulateKeyPress(VirtualKeyCode.RETURN);

                            Thread.Sleep(500);

                            //Thread.Sleep(500);

                            //ffbrowser.SwitchTo().DefaultContent();

                            //Thread.Sleep(1000);

                            //ffbrowser.SwitchTo().Frame("content");

                            //ffbrowser.SwitchTo().Frame("leftnav");

                            //Thread.Sleep(1000);

                            //ffbrowser.FindElement(By.LinkText("My Bills")).Click();

                            //Thread.Sleep(1000);

它位于登录后面的网站上,因此如果不提供敏感的登录信息,我无法提供实际示例。但我使用switchTo进入一个框架,然后我需要做Navigate.Back(),但是当我尝试导航时它会崩溃。

1 个答案:

答案 0 :(得分:2)

我对C#的知识非常有限,但我知道如果你试图在iframe对象内部调用WebDriver对象上的方法,那么在其他绑定(如Java和Ruby)中会抛出错误。

解决方法是在尝试webdriver.switchTo().defaultContent()之前使用webdriver.Navigate.Back()方法。