Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#硒-罐';无法在新选项卡中获取元素_C#_Selenium - Fatal编程技术网

C#硒-罐';无法在新选项卡中获取元素

C#硒-罐';无法在新选项卡中获取元素,c#,selenium,C#,Selenium,我有一段代码,可以点击网页上的链接,打开一个新标签,并自动将我的视图切换到新标签。当我尝试从新网页中选择元素时,我会收到错误消息,说这些元素不存在,即使它们确实存在。在测试崩溃之前的大多数时候,选项卡实际上会变回原来的状态,这让我相信它实际上是在搜索旧选项卡上的元素。我尝试使用\u driver.SwitchTo().Window(\u driver.WindowHandles.Last())希望它能做些什么,但它只是完全关闭窗口,打开一个新的空白窗口。如何获取它,以便从新网页获取元素,而不再引

我有一段代码,可以点击网页上的链接,打开一个新标签,并自动将我的视图切换到新标签。当我尝试从新网页中选择元素时,我会收到错误消息,说这些元素不存在,即使它们确实存在。在测试崩溃之前的大多数时候,选项卡实际上会变回原来的状态,这让我相信它实际上是在搜索旧选项卡上的元素。我尝试使用
\u driver.SwitchTo().Window(\u driver.WindowHandles.Last())
希望它能做些什么,但它只是完全关闭窗口,打开一个新的空白窗口。如何获取它,以便从新网页获取元素,而不再引用旧选项卡?

使用此帮助功能切换到您选择的选项卡。索引由它们的创建顺序决定。因此,默认的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);
    }

等待只是为了让新选项卡加载。这些等待不是好的做法,因此您应该寻找其他方法来等待您正在等待的任何元素/状态。

使用此帮助函数切换到您选择的选项卡。索引由它们的创建顺序决定。因此,默认的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);
    }
等待只是为了让新选项卡加载。这些等待不是好的实践,所以您应该寻找其他方法来等待您正在等待的元素/状态