Selenium c#切换到帧时出错。无法计算表达式,因为本机帧位于调用堆栈的顶部

时间:2017-07-18 20:14:01

标签: c# selenium-webdriver webdriver frame

登录后,我将切换到此帧,我收到以下错误:

  

"无法计算表达式,因为本机框架位于调用堆栈的顶部。"

以下是代码行:

Driver.SwitchTo().Frame("tabMain__ctl0_ult.org.com-Default");

该脚本已执行多次并且工作正常。但是今天突然间我得到了这个错误。我查看了之前的帖子,但没有任何帮助。请提出任何解决方案。

1 个答案:

答案 0 :(得分:0)

使用此帮助程序功能切换到您选择的选项卡。索引由它们创建的顺序决定。所以你的默认tabIndex是0,如果你打开一个新的选项卡/窗口,它将有tabIndex 1,依此类推......

internal void SwitchToTab(int tabIndex) {
    WebDriver.Instance.Wait(2);
    var newTab = WebDriver.Instance.Driver().WindowHandles[tabIndex];
    Instance.Driver().SwitchTo().Window(newTab);
    WebDriver.Instance.Wait(2);
}

等待只是为了让新标签加载。这些等待不是好习惯,所以你应该寻找其他方法来等待你正在等待的任何元素/状态。

这与我在此主题中发布的答案相同:C# Selenium - Can't Get Elements in New Tab