当前位置: 首页 > 知识库问答 >
问题:

Selenium无法识别新打开的窗口-Selenium C#

梁丘赞
2023-03-14

似乎我在代码中遇到了一些同步问题。在我的过程中,我点击了一个按钮,打开了一个新的窗口。我通过下面的代码切换到新窗口。

_webdriver.SwitchTo().Window(_webdriver.WindowHandles.Last();
_webdriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

我甚至试过:

Thread.Sleep(3000);

不幸的是,大多数时候的问题似乎是selenium没有切换到新窗口(调试时可以看到它)。

我很乐意得到你的帮助。

共有1个答案

华季萌
2023-03-14

您可以等待两个窗口,然后将上下文设置为新窗口:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));

// wait for 2 windows
ReadOnlyCollection<String> handles = null;
wait.Until((d) => (handles = driver.WindowHandles).Count > 1);

// set the context on the new window
driver.SwitchTo().Window(handles[handles.IndexOf(driver.CurrentWindowHandle) ^ 1]);
 类似资料:
  • 我已经手动为Google.com打开了一个浏览器窗口,还有另一个浏览器窗口是由selenium webdriver为Google.com打开的。 我如何识别哪一个是硒打开的? 这个问题是在一次采访中问我的。我回答说,selenium打开的窗口不会有插件,还有一个是用Driver。关闭,但面试官说还有其他办法也可以识别。

  • 查看这段代码,它们展示了一种在登录后显示新窗口的方法。当用户名和密码是正确的,它打开新的对话框。我想要一个按钮点击打开新的对话框,而不检查用户名和密码。

  • 这个问题被简化为下面的代码: 我已经打开了3个选项卡,但是len(driver_temp.window_handles)总是1

  • 问题内容: 我正在使用Selenium WebDriver。每个链接都会在新的浏览器窗口中打开。这对我来说不方便。如何更改它以便仅在新选项卡中打开? 问题答案: 硒目前无法切换标签。因此,我们迫使浏览器在新窗口中打开链接,但是由于我们能够切换窗口,因此我们迫使浏览器采用这种方法。这 可能 会在更高版本中修复

  • 我正在使用Selenium WebDriver。每个链接都在一个新的浏览器窗口中打开。对我来说不方便。我如何更改它,使它只在新选项卡中打开?

  • 我正在使用Selenium WebDriver从下拉列表中获取值。不幸的是,我无法获取它,因为我的代码无法识别xpath。 这是我的代码: 问题在于第1行(WebElement选择器)。在输出中,我得到如下结果: 线程“main”组织中出现异常。openqa。硒。InvalidSelectorException:无法计算xpath表达式“id('search”)/x:fieldset/x:tabl