• 《SeleniumBasic 3.141.0.0


    JavaScript中的JSON,指的是数组和字典形式的字符串。JSON解析是把字符串转换为对象,或者把对象转换为字符串的过程。

    其中JavaScript的parse函数用于把字符串转换为对象,stringify则可以把对象输出为格式良好的字符串。

    下面以处理浏览器的信息为例讲解。

    IWebDriver对象的Capabilities返回一个JSON对象,如果要从中得到某个属性值,需要借助ExecuteScript执行脚本。

    在VBA执行如下代码:

    WD.New_ChromeDriver Service:=Service, Options:=Options
    WD.URL = "https://www.baidu.com"
    Debug.Print WD.Capabilities.ToString

    立即窗口中打印出如下互相嵌套的字符串:

    {
      "acceptInsecureCerts": false,
      "browserName": "chrome",
      "browserVersion": "85.0.4183.121",
      "chrome": {
        "chromedriverVersion": "85.0.4183.87 (cd6713ebf92fa1cacc0f1a598df280093af0c5d7-refs/branch-heads/4183@{#1689})",
        "userDataDir": "C:\Users\ADMINI~1\AppData\Local\Temp\scoped_dir8752_2084918897"
      },
      "goog:chromeOptions": {
        "debuggerAddress": "localhost:59968"
      },
      "networkConnectionEnabled": false,
      "pageLoadStrategy": "normal",
      "platformName": "windows",
      "proxy": {},
      "setWindowRect": true,
      "strictFileInteractability": false,
      "timeouts": {
        "implicit": 0,
        "pageLoad": 300000,
        "script": 30000
      },
      "unhandledPromptBehavior": "dismiss and notify",
      "webauthn:virtualAuthenticators": true
    }

    这些信息中,有的信息只有一层,例如browserVersion,可以直接读出对应的值。

    有一些信息,还有下一层花括号包含。例如userDataDir,它的JPath是:chrome.userDataDir,也就是说,需要先得到外层的chrome。

    Dim beautiful As String

    beautiful = WD.ExecuteScript("var J=JSON.parse(arguments[0]);return J.browserVersion", WD.Capabilities.ToString)
    Debug.Print beautiful

    beautiful = WD.ExecuteScript("var J=JSON.parse(arguments[0]);return J.chrome.userDataDir", WD.Capabilities.ToString)
    Debug.Print beautiful

    上述程序中J是一个JavaScript中的内部变量,通过parse函数把Capabilities字符串转换为JSON对象。打印结果分别为:

    85.0.4183.121
    C:UsersADMINI~1AppDataLocalTempscoped_dir8752_2084918897

    接下来体会一下stringify的魅力。该函数可以把JSON对象按指定的缩进量进行输出,下面的程序设置8个空格的缩进。

    beautiful = WD.ExecuteScript("var J=JSON.parse(arguments[0]);return JSON.stringify(J,null,8)", WD.Capabilities.ToString)
    Debug.Print beautiful

    可以看到上下级节点的缩进空白很宽。

    SeleniumBasic中的ICapabilities是一个特殊的JSON,它具有GetCapability和Item方法,可以返回指定名称的JSON对象。这样就不需要使用parse函数就能处理。

    beautiful = WD.ExecuteScript("return arguments[0].pageLoad", WD.Capabilities.GetCapability("timeouts"))
    Debug.Print beautiful

    上述程序的结果是30000

  • 相关阅读:
    Java Web(三) 会话机制,Cookie和Session详解(转载)
    如何转载别人的文章
    C#操作Word的+ CKEditor 輸出成Word文件(包含圖案上傳)
    vs2013 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”。是否缺少程序集引用?
    CKEditor与CKFinder学习--自定义界面及按钮事件捕获
    JS获取CkEditor在线编辑的内容
    <%#Eval() %>的常用方法
    ASP.NET 中 ContentType 类型
    富文本编辑器 CKeditor 配置使用+上传图片
    VS2013 蛋疼的“AJAX Control Toolkit”安装过程
  • 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/13762780.html
Copyright © 2020-2023  润新知