You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# Selenium的JavaScriptExecutor执行脚本中传入变量

C# Selenium 向JavaScriptExecutor传递变量的方法

错误原因

C#代码中定义的elementID、fieldValue属于C#运行上下文的变量,直接写在JavaScript脚本字符串中时,JS执行上下文无法识别这些未在JS作用域中声明的变量,因此会抛出变量未定义的错误。

正确实现方案

Selenium的ExecuteScript方法支持传入可变参数,所有额外传入的参数会按顺序映射到JS执行环境的arguments数组中,通过下标即可获取对应传入的值,示例代码如下:

var elementID = "text box1";
var fieldValue = "hello";
// 额外参数按顺序对应arguments[0]、arguments[1]...
((IJavaScriptExecutor)webdriver).ExecuteScript("document.getElementById(arguments[0]).value = arguments[1]", elementID, fieldValue);

补充说明

  • 参数传递顺序和arguments下标严格对应,第一个额外参数对应arguments[0],第二个对应arguments[1],以此类推
  • 支持传入的参数类型包括字符串、数字、布尔值、Selenium的IWebElement对象等,Selenium会自动完成跨上下文的类型转换
  • 原生JS的DOM方法为getElementById(末尾d为小写),部分浏览器对方法名大小写敏感,大写D的写法可能导致方法调用失败

内容的提问来源于stack exchange,提问作者SenatorUppercut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:24:03