【问题标题】:Switching Frame in Selenium Webdriver, C#在 Selenium Webdriver,C# 中切换框架
【发布时间】:2013-05-22 21:51:18
【问题描述】:

我在使用 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")).Click();

                            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(),但是当我尝试导航时它会因该错误而崩溃。

【问题讨论】:

  • 你用的是什么代码?什么浏览器?那个浏览器是什么版本的?什么版本的硒?你有什么堆栈跟踪?

标签: selenium webdriver frames


【解决方案1】:

我对 C# 的了解非常有限,但我知道如果您尝试在 iframe 对象中调用 WebDriver 对象上的方法,则会在其他绑定(如 Java 和 Ruby)中引发错误。

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

【讨论】:

  • 谢谢 bgoad,我确实有 webdriver.switchTo().defaultContent() 但我在切换到默认内容时收到了相同的错误消息。
  • 看起来您正试图在代码中的某处调用webdriver.executeScript。您能否用您的代码更新问题,包括这一行,以及用于切换进出 iframe 的行以及 Navigate.Back() 行?
  • bgoad,我用我的部分代码更新了我的问题。你可能会注意到在我到达这一点之前我有两个切换到框架。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 2013-04-12
  • 2015-02-08
  • 2012-11-28
相关资源
最近更新 更多