zoukankan      html  css  js  c++  java
  • [转载]Selenium実行中にJavaScriptのコードを実行する

    Selenium実行中にJavaScriptのコードを実行する

    JavaScriptで画面の値を取得/設定するコードをメモ。

    WebDriverEx.cs
    // JavaScriptを実行(戻り値なし)
    public static void ExecuteJavaScript(this IWebDriver driver, string script)
    {
        if (driver is IJavaScriptExecutor)
            ((IJavaScriptExecutor)driver).ExecuteScript(script);
        else
            throw new WebDriverException();
    }
    
    // JavaScriptを実行(戻り値あり)
    public static T ExecuteJavaScript<T>(this IWebDriver driver, string script)
    {
        if (driver is IJavaScriptExecutor)
            return (T)((IJavaScriptExecutor)driver).ExecuteScript(script);
        else
            throw new WebDriverException();
    }
    
    
    使い方
    // <input name="hoge">のvalueに「1234567890」を設定
    driver.ExecuteJavaScript("document.getElementsByName('hoge')[0].value = '1234567890';");
    
    // <input name="hoge" maxlength="8">のmaxlengthを削除
    driver.ExecuteJavaScript("document.getElementsByName('hoge')[0].removeAttribute('maxlength');");
    
    // ページのタイトルをstring型で取得
    string str = driver.ExecuteJavaScript<string>("return document.title;");
    
    // ブラウザの現在時刻をDateTime型で取得
    DateTime date = driver.ExecuteJavaScript<DateTime>("return new Date();");
    

    IWebElementをJavaScriptで操作する。

    By.IdやBy.Nameで取得したIWebElementをJavaScriptで操作するには、
    スクリプトの後に引数を追加します。

    WebDriverEx.cs
    // JavaScriptを実行(戻り値なし)
    public static void ExecuteJavaScript(this IWebDriver driver, string script, params object[] args)
    {
        if (driver is IJavaScriptExecutor)
            ((IJavaScriptExecutor)driver).ExecuteScript(script, args);
        else
            throw new WebDriverException();
    }
    
    
    使い方
    // argumentsに引数の配列が渡されます。
    IWebElement e = driver.FindElement(By.Name("hoge"));
    driver.ExecuteJavaScript("arguments[0].value = 'piyo';", e);
    
  • 相关阅读:
    Flutter 中的基本路由
    BottomNavigationBar 自定义 底部导航条
    StatefulWidget 有状态组件
    flutte页面布局四
    flutter页面布局三
    flutter页面布局二
    设计模式-工厂方法模式
    设计模式-代理模式
    设计模式-装饰模式
    SpringBoot项目部署到服务器上,tomcat不启动该项目
  • 原文地址:https://www.cnblogs.com/c-x-a/p/7994162.html
Copyright © 2011-2022 走看看