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

OpenQA。Selenium错误:“无效参数”“句柄”必须是字符串

邢良才
2023-03-14

在使用Selenium进行远程测试时,切换到新窗口时遇到一些问题。我在本地测试时没有问题,但在远程测试时,它不断显示“handle”一定是字符串错误。我已经检查了我的代码,并确保我的窗口参数是字符串。有人请帮忙。

下面是代码和生成的错误。

    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。硒。WebDriverException:'无效参数:'句柄'必须是字符串(会话信息:chrome=75.0.3770.90)生成信息:版本:'3.141.59',版本:'e82be7d358',时间:'2018-11-14T08:25:53'系统信息:主机:'8f5340ba4bc2',ip:'172.21.0.12',操作系统。操作系统名称:Linux。拱门:“amd64”,操作系统。版本:“4.4.0-145-generic”,java。版本:“1.8.0_212”驱动程序信息:驱动程序。版本:未知'

共有3个答案

沈英勋
2023-03-14

对于用户在使用selenium 3(特别是3.14)Chrome版本93上执行BrowserStack测试时遇到此错误,我的问题通过添加browserstack.use_w3c: true得到了解决

默认情况下,BrowserStack在非w3c模式下运行测试。如果我们想启用w3c规范,我们需要显式地传递它。

注意:在使用上述功能设置w3c规范格式时,请确保您的其他功能符合w3c。否则,在创建webdriver会话时,这些将被忽略,并且只有符合w3c的将被保留。

魏宏邈
2023-03-14

'invalid argument:'handle'必须是一个字符串我遇到了这个Selenium问题,并通过将Selenium版本3.141.59更改为3.5.2暂时解决了它

苏磊
2023-03-14

我也有同样的问题,下面的代码帮助我摆脱了这个错误。初始化chrome驱动程序时必须执行以下操作:

    public IWebDriver GetRemoteChromeDriver(string downloadPath)
    {
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.AddUserProfilePreference("download.default_directory", downloadPath); //just setting he download path
        chromeOptions.AddArgument("--start-maximized");
        chromeOptions.AddArgument("no-sandbox"); //this line is here due another issue, so it isn't necessary
        chromeOptions.AddAdditionalCapability("w3c", false); //this is the relevant line that hopefully will solve the problem
        Environment.SetEnvironmentVariable("webdriver.chrome.driver", @"c:\BuildTools\Selenium\chromedriver.exe"); //
        ICapabilities capability = chromeOptions.ToCapabilities();

        IWebDriver driver = new RemoteWebDriver(capability);

        return driver;
    }

这是一个最新铬的错误。它现在默认支持W3C规范,不需要通过该选项。如果通过,则会出现此bug。

我在github上找到了这个主题的解决方案,它为我完成了任务,我希望它也能帮助其他人。

 类似资料:
  • 问题内容: 我在PHP代码的顶部添加了以下几行,但是会引发错误: 致命错误:函数名称必须是第2行/home/reg.php中的字符串 我尝试过:。cookie已成功设置并且可用。使用时为什么会给我一个错误? 问题答案: 应该是,不是 是一个数组,而不是一个函数。

  • 我知道很多人问过相关的问题,但请帮我解决。我试图复制一个我在网上找到的开源温度控制实验室。我想在树莓皮上运行它。这就是我一直遇到的错误: 生成它的代码如下所示: 我相信这段代码试图通过以下代码与另一个python文件通信: 我还不知道我周围的python代码,所以一个非常清晰的“虚拟类”解决方案的解释会很有帮助。谢谢伙计们。

  • 我想对一个浮点数进行四舍五入,得到点后的两位数。但我收到了一个错误: float()参数必须是字符串或数字,而不是“NoneType” 在评级模型的评级字段中四舍五入是一个坏主意,因为平均_评级不会四舍五入

  • 我已经使用stencil一段时间了,正在为它开发一个自定义的主题,我已经安装了nvm和Node5.0和NPM2。我也删除了stencil,并重新安装了所有的内容,包括节点模块和stencil init,但不管什么情况,当运行stencil start时,我仍然会出现下面的错误,我已经在谷歌上搜索了这个问题,但却是空的,所以我希望有人能帮我解决这个问题。提前道谢!

  • 问题内容: 我正在尝试自己学习编程,但仍在尝试掌握它。我收到以下错误: java.io.IOException:句柄无效 这是我的代码 我相信,每当我调用该方法时,都会出现错误,当我尝试显示默认构造函数中的字节数时,它可以很好地工作并显示。 问题答案: 好了,在实际开始使用它之前,请先关闭构造函数的块。将结束部分从构造函数中移到完成后将被调用的位置,例如在main 下方调用或单独的close方法。

  • 我正试着跟着弗利特酒吧走。Cognito和AWS用户身份验证的开发文档。我正在构建一个Flatter移动应用程序,并且能够成功地将用户注册到我的AWS用户池中。我试图编码的登录功能,但它不会注册任何参数,我试图给它。i、 e密码和用户名(电子邮件) 我试着重新启动电脑,Android Studio,尝试遵循所有AWS文档,并在上面重新编写代码https://pub.dev/packages/ama