[转载]Selenium実行中にJavaScriptのコードを実行する

mac2022-06-30  17

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);

转载于:https://www.cnblogs.com/c-x-a/p/7994162.html

最新回复(0)