为了改善我网站上的硒等待,我需要检查特定的表是否已完成绘图。
我正在查看的网站使用datatables.net,它提供了前期和后期绘制事件处理程序。
我的javascript代码如下所示......
var isDrawn;
var table = $("#CustomField-443c6726-05c3-48d0-8dfe-c1a26d749cdf").DataTable();
table.on('preDraw', function () {
console.log('Redraw started at: ' + new Date().getTime());
isDrawn = false;
});
table.on('draw', function () {
console.log('Redraw finished at: ' + new Date().getTime());
isDrawn = true;
});
function returnDrawStatus() {
console.log(isDrawn);
return isDrawn;
};
如果我将它粘贴到chrome dev工具的控制台窗口中,似乎附加了事件处理程序,我可以访问'isDrawn'变量和'returnDrawStatus()'函数。
当我尝试使用selenium javascript执行程序执行相同的操作时,会附加事件处理程序(如果我暂停我的selenium脚本并重新排序表,则由控制台日志消息证明),但我无法返回值'IsDrawn',因为我收到以下错误..
System.InvalidOperationException occurred
HResult=0x80131509
Message=unknown error: returnDrawStatus is not defined
这是执行javascript的方法,脚本字符串变量的值为 returnDrawStatus();
internal static bool ExecuteJavascriptReturn(IWebDriver driver, string script)
{
var result = ((IJavaScriptExecutor) driver).ExecuteScript(script);
return (bool)result;
}
TLDR
谢谢
答案 0 :(得分:0)
C#+ Selenium WebDriver
((IJavaScriptExecutor)driver).ExecuteScript("window.foo = false;");