• Selenium Webdriver 中的 executeScript 使用方法


    1.使用executeScript 返回一个WebElement .

      下例中我们将一个浏览器中的JavaScript 对象返回到客户端(C#,JAVA,Python等)。

    IWebElement element = (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return $('.cheese')[0]");

    2.使用executeScript 和参数组合返回一个WebElement列表。

      下例中我们将客户端中的一个 IList<IWebElement> 对象传递到 浏览器中作为一个 JaveScript 对象使用。

    IList<IWebElement> labels = driver.FindElements(By.TagName("label"));
    IList<IWebElement> inputs = (IList<IWebElement>) ((IJavaScriptExecutor)driver).ExecuteScript(
        "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +
        "inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels);

    函数详细解释:

    //
    // Summary:
    // Executes JavaScript in the context of the currently selected frame or window.
    //
    // Parameters:
    // script:
    // The JavaScript code to execute.
    //
    // args:
    // The arguments to the script.
    //
    // Returns:
    // The value returned by the script.
    //
    // Remarks:
    // The OpenQA.Selenium.IJavaScriptExecutor.ExecuteScript(System.String,System.Object[])method
    // executes JavaScript in the context of the currently selected frame or window.
    // This means that "document" will refer to the current document. If the script
    // has a return value, then the following steps will be taken:
    // For an HTML element, this method returns a OpenQA.Selenium.IWebElement For a
    // number, a System.Int64 is returned For a boolean, a System.Boolean is returned
    // For all other cases a System.String is returned. For an array,we check the first
    // element, and attempt to return a System.Collections.Generic.List`1 of that type,
    // following the rules above. Nested lists are not supported. If the value is null
    // or there is no return value, null is returned.
    // Arguments must be a number (which will be converted to a System.Int64), a System.Boolean,
    // a System.String or a OpenQA.Selenium.IWebElement. An exception will be thrown
    // if the arguments do not meet these criteria. The arguments will be made available
    // to the JavaScript via the "arguments" magic variable, as if the function were
    // called via "Function.apply"

    object ExecuteScript(string script, params object[] args);

    翻译一下 :

    1.作用域:当前frame 或 window ,如果是在frame下执行,应该受到frame 的范围影响。

    2.返回值:我们客户端以C#为例

    JavaScript c#
    HTML element OpenQA.Selenium.IWebElement
    number System.Int64
    boolean System.Boolean
    其它类型 System.String
    array 检查第一个元素,尝试转换为System.Collections.Generic.List`1 
    null null
    没有返回 null
    Nested lists  不支持

    3.参数:

    C# JavaScript
    OpenQA.Selenium.IWebElement HTML element
    System.Int64 number
    System.Boolean boolean
    System.String string
    其它类型  thrown exception

    其他

  • 相关阅读:
    MSE 治理中心重磅升级流量治理、数据库治理、同 AZ 优先
    存储经验:VERITAS NetBackup 安装指导文档
    How to reset the NetBackup authentication password on an MSDP disk pool
    NFS高可用(NFS+keepalive+Sersync)
    非常强悍并实用的双机热备+负载均衡线上方案
    R语言收益率和波动性模拟股票价格COMP226带自测题
    R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系|附代码数据
    共享单车数据可视化分析|附代码数据
    非线性混合效应 NLME模型对抗哮喘药物茶碱动力学研究|附代码数据
    拓端tecdat|matlab预测ARMAGARCH 条件均值和方差模型
  • 原文地址:https://www.cnblogs.com/xixiuling/p/10277886.html
Copyright © 2020-2023  润新知