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);
    
  • 相关阅读:
    Pyhon的json库常用方法
    常用的Python操作
    Leetcode: 1301.Number of Paths with Max Score
    redis 源码阅读杂记
    二分查找性能试验
    leetcode: 600. Non-negative Integers without Consecutive Ones
    Leetcode: 902. Numbers At Most N Given Digit Set
    leetcode:956. Tallest Billboard
    innodb 插入性能简单测试
    redis 源码阅读之 redis.c
  • 原文地址:https://www.cnblogs.com/c-x-a/p/7994162.html
Copyright © 2011-2022 走看看