Selenium + C#:ExecuteAsyncScript 不起作用

Posted

技术标签:

【中文标题】Selenium + C#:ExecuteAsyncScript 不起作用【英文标题】:Selenium + C#: ExecuteAsyncScript not working 【发布时间】:2016-04-29 13:38:21 【问题描述】:

我正在尝试通过 Selenium 驱动程序运行 javascript。 executeAsyncScript 参数给出输入字符串格式不正确的异常。 javascript 在提供的路径中。 javascript函数实际上是一个onclick,它不带任何参数,而是返回一个我想得到的值以供进一步计算。

 Driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(5));
           var js = Driver as IJavaScriptExecutor;
     var formobject = js.ExecuteAsyncScript(
                           "var callback = arguments[0];"
                         + "var params = arguments;"
                         + "require(['Recruiting/Modules/CandidateProfile'],function(onPrint)"
                         + "onPrint("
                         + ",callback"
                         + "););"
                     );

【问题讨论】:

回调前的逗号是干什么用的?不应该说 onPrint(callback) 吗?我想你可能对所有的串联感到困惑。 这看起来不像是有效的 JS。 【参考方案1】:

我认为您的 javascript 语法不正确。如果你省略引号,你会得到:

var callback = arguments[0];
var params = arguments;
require(['Recruiting/Modules/CandidateProfile'],function(onPrint)
onPrint(
,callback
););

参见onPrint 之后和callback 之前的,

【讨论】:

以上是关于Selenium + C#:ExecuteAsyncScript 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Selenium:使用 C# 在 IWebElement 上触发鼠标滚轮

C# + Selenium + ChromeDriver 爬取网页

如何在 c# 中使用 Selenium 刷新网页?

如何在 C# Selenium 中向 FirefoxDriverService 添加配置文件规范?

C#使用Selenium

Selenium + C#:ExecuteAsyncScript 不起作用