[转载]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);
posted @ 2017-12-06 18:15  公众号python学习开发  阅读(196)  评论(0编辑  收藏  举报