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

[转载]Selenium実行中にJavaScriptのコードを実行する的更多相关文章

  1. 【转载】在LoadRunner中执行命令行程序之:popen()取代system()

    我想大家应该都知道在LoadRunner可以使用函数system()来调用系统指令,结果同在批处理里执行一样. 但是system()有个缺陷:无法获取命令的返回结果. 也许你可以用`echo comm ...

  2. 【转载】C#中遍历DataTable中的数据行

    在C#中的Datatable数据变量的操作过程中,有时候我们需要遍历DataTable变量获取每一行的数据值,例如将DataTable变量转换为List集合的时候,我们就会遍历DataTable变量, ...

  3. Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...

  4. ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  5. Mac 在命令行中获得Root权限

    Mac 在命令行中获得Root权限 作者 firedragonpzy 13 九月, 2012 2条评论 本文为firedragonpzy原创,转载务必在明显处注明:转载自[Softeware MyZo ...

  6. JavaScript Table行定位效果

    作者:cloudgamer 时间: 2009-09-17 文档类型:原创 来自:蓝色理想 第 1 页 JavaScript Table行定位效果 [1] 第 2 页 JavaScript Table行 ...

  7. 在 Linux 命令行中使用和执行 PHP 代码

    PHP是一个开源服务器端脚本语言,最初这三个字母代表的是“Personal Home Page”,而现在则代表的是“PHP:Hypertext Preprocessor”,它是个递归首字母缩写.它是一 ...

  8. (原+转)pycharm中传入命令行参数

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5670821.html 参考网址: http://zhidao.baidu.com/question/5 ...

  9. View中选择的数据行中的部分数据传入到Controller中

    将View中选择的数据行中的部分数据传入到Controller中   ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NE ...

随机推荐

  1. luogu 2115 破坏(01分数规划)

    题意:给出一个序列,删除一个连续的子串后使得剩下的平均值最小. 典型的01分数规划,令f(x)=(sum1[i]+sum2[j])/(i+j).sum1表示前缀和,sum2表示后缀和,那么我们就相当于 ...

  2. 【bzoj5028】小Z的加油店 扩展裴蜀定理+差分+线段树

    题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.$m$ 次操作,每次给 $[l,r]$ 内的瓶子容量增加 $ ...

  3. Linux内核设计与实现第五周读书笔记

    第十八章 调试 18.1准备开始 需要的只是: 一个确定的bug.大部分bug通常都不是行为可靠而且定义明确的. 一个藏匿bug的内核版本. 相关的内核代码的知识和运气. 18.2内核中的bug 内核 ...

  4. 70路小报:用PV和UV作为网站衡量指标已经过时

    方法]投资人呼吁:PV和UV不应该再作为产品衡量指标 风险投资机构Andreessen Horowitz近日一直反对再用传统的网站衡量指标去评价互联网产品,比如PV和UV,甚至包括应用的下载量. 他们 ...

  5. 排座位&&Little Elephant And Permutation——排列dp的处理

    排列的问题,就是要把序列排个序,使之达到某种最优值或者统计方案数 dp可以解决部分排列问题. 通常的解决方案是,按照编号(优先级)排序决策,从左到右决策两种. 这里主要是第一个. 排座位• 有

  6. 【BZOJ 1129】[POI2008]Per 二叉堆

    这个东西读完题之后,就能知道我们要逐位计算贡献.推一下式子,会发现,这一位的贡献,是当前剩余的数字形成的序列的总数,乘上所剩数字中小于s上这一位的数的个数与所剩数字的总数的比.所以我们维护“当前剩余的 ...

  7. 【OpenCV】特征检测器 FeatureDetector

    <SIFT原理与源码分析>系列文章索引:http://www.cnblogs.com/tianyalu/p/5467813.html OpenCV提供FeatureDetector实现特征 ...

  8. ios错误码:NSError对象.code

    1. URL Loading System Error Codes These values are returned as the error code property of an NSError ...

  9. java面试之闭包(closure)

    今天在学习Openresty的时候回顾了下闭包这个问题,感觉很久没有深入的了解这块的内容的,只是之前js的时候学习过闭包,突然一问,感觉不记得闭包了: 看了一个比较有趣的答案: 闭包,顾名思义,就是把 ...

  10. STL源码分析-priority_queue

    http://note.youdao.com/noteshare?id=402cd1487d34af1a11f0daac6d16132f