【发布时间】:2020-02-17 09:55:03
【问题描述】:
在使用 Selenium 执行远程测试时,我在切换到新窗口时遇到了一些问题。 我在本地测试时没有问题,但是在远程测试时,它不断出现“句柄”必须是字符串错误。我检查了我的代码并确保我的窗口参数是一个字符串。有人请帮忙。
下面是代码和生成的错误。
public static void SwitchToLoginWindow(IWebDriver webDriver)
{
// Wait for the popup to appear
ReadOnlyCollection<string> wh;
int timeCount = 1;
do
{
wh = webDriver.WindowHandles;
Thread.Sleep(200);
timeCount++;
if (timeCount > 50)
{
break;
}
}
while (wh.Count == 1);
//Thread.Sleep(500);
//int numberOfWindows = wh.Count;
var numberOfWindow = wh.Count;
Console.WriteLine($"Switching to Azure AD login popup. Return URL is {webDriver.Url}");
Thread.Sleep(200);
webDriver.SwitchTo().Window(wh[numberOfWindow - 1]);
Waiters.ExplicitWait(webDriver, SelectorType.CssSelector, AzureAd.UserNameField);
}
异常错误
扔在这里:
webDriver.SwitchTo().Window(wh[numberOfWindow - 1]);
OpenQA.Selenium.WebDriverException: 'invalid argument: 'handle' must be a string (会话信息:chrome=75.0.3770.90) 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:25:53' 系统信息:主机:'8f5340ba4bc2',ip:'172.21.0.12',os.name:'Linux',os.arch:'amd64',os.version:'4.4.0-145-generic',java.version :'1.8.0_212' 驱动信息:driver.version: unknown'
【问题讨论】:
-
我遇到了同样的问题,但仅限于 Edge 浏览器。这个问题不是 100% 可重现的,所有浏览器都运行良好,Edge 大约 80% 失败,但有相同的例外。
-
我在 Edge 中遇到了同样的问题。有人找到解决方案了吗?
标签: c# selenium-webdriver selenium-chromedriver