【问题标题】:C# - How to detect browser typeC# - 如何检测浏览器类型
【发布时间】:2016-11-10 23:57:27
【问题描述】:

我正在使用 C# 运行 Selenium,以便在多个浏览器(IE、FF、Chrome)上进行自动化测试,我的测试中有一部分通过了 Chrome,但没有通过 Firefox。

有没有办法检测自动化测试期间当前使用的浏览器类型?

【问题讨论】:

  • ((RemoteWebDriver) driver).Capabilities.BrowserName 如果没有,请显示您尝试过什么
  • 嗨@OscarMartinez:我试过了,Chrome 会返回次要版本,但 IE 只返回主要版本 (11)。你知道我怎样才能获得 IE 11 的次要版本吗?
  • @AngieM 你是在控制台应用程序还是 ASP.NET 上?
  • @OscarMartinez:我有一个测试项目和一个使用 WebDriver 的单元测试。无论如何,我最终阅读了 IE 完整版(主要 + 次要)的注册表。

标签: c# selenium browser detection


【解决方案1】:

您可以从 Nugget 安装 UAParser: https://www.nuget.org/packages/UAParser/

它将读取客户端标头并解析它。

示例:

  //string uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3";

 // Request the header
  string uaString= HttpContext.Current.Request.UserAgent.ToString();

// get a parser with the embedded regex patterns
  var uaParser = Parser.GetDefault();

  // get a parser using externally supplied yaml definitions
  // var uaParser = Parser.FromYamlFile(pathToYamlFile);
  // var uaParser = Parser.FromYaml(yamlString);

  ClientInfo c = uaParser.Parse(uaString);

  Console.WriteLine(c.UserAgent.Family); // => "Mobile Safari"
  Console.WriteLine(c.UserAgent.Major);  // => "5"
  Console.WriteLine(c.UserAgent.Minor);  // => "1"

  Console.WriteLine(c.OS.Family);        // => "iOS"
  Console.WriteLine(c.OS.Major);         // => "5"
  Console.WriteLine(c.OS.Minor);         // => "1"

  Console.WriteLine(c.Device.Family);    // => "iPhone"

【讨论】:

    【解决方案2】:

    使用以下代码

    System.Web.HttpBrowserCapabilities browser = Request.Browser;
    string s = "Browser Capabilities\n"
        + "Type = "                    + browser.Type + "\n"
        + "Name = "                    + browser.Browser + "\n"
        + "Version = "                 + browser.Version + "\n"
        + "Major Version = "           + browser.MajorVersion + "\n"
        + "Minor Version = "           + browser.MinorVersion + "\n"
        + "Platform = "                + browser.Platform + "\n"
        + "Is Beta = "                 + browser.Beta + "\n"
        + "Is Crawler = "              + browser.Crawler + "\n"
        + "Is AOL = "                  + browser.AOL + "\n"
        + "Is Win16 = "                + browser.Win16 + "\n"
        + "Is Win32 = "                + browser.Win32 + "\n"
        + "Supports Frames = "         + browser.Frames + "\n"
        + "Supports Tables = "         + browser.Tables + "\n"
        + "Supports Cookies = "        + browser.Cookies + "\n"
        + "Supports VBScript = "       + browser.VBScript + "\n"
        + "Supports JavaScript = "     + 
            browser.EcmaScriptVersion.ToString() + "\n"
        + "Supports Java Applets = "   + browser.JavaApplets + "\n"
        + "Supports ActiveX Controls = " + browser.ActiveXControls 
              + "\n"
        + "Supports JavaScript Version = " +
            browser["JavaScriptVersion"] + "\n";
    

    【讨论】:

    • 如何在 Selenium 测试项目中获取 HttpRequest 对象?我们正在处理的唯一对象是 WebDriver。
    猜你喜欢
    • 2021-11-21
    • 2011-09-26
    • 2013-10-21
    • 2011-02-09
    • 1970-01-01
    • 2011-08-12
    • 2011-10-13
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多