C# Selenium:调用页面上的javascript函数

C# Selenium:调用页面上的javascript函数,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我试图调用页面上现有的javascript函数,但没有得到它 这就是我所拥有的元素: <area shape="rect" coords="513,0,580,66" href="#" onclick="document.f2.submit();"> 例外情况: unknown error: Cannot read property 'submit' of undefined (Session info: chrome=55.0.2883.87) (Driver info: chr

我试图调用页面上现有的javascript函数,但没有得到它

这就是我所拥有的元素:

<area shape="rect" coords="513,0,580,66" href="#" onclick="document.f2.submit();">
例外情况:

unknown error: Cannot read property 'submit' of undefined
(Session info: chrome=55.0.2883.87)
(Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 6.1.7601 SP1 x86_64)

如何正常执行此操作?

有时脚本执行得太早,页面中的某些元素尚未就位(因此会出现错误)

在这些情况下,最好的做法是在经过一段时间后执行脚本,以确定这确实是问题所在

js.ExecuteScript("setTimeout(function() { document.f2.submit(); }, 1000);");

在确认问题确实是计时之后,下一步要做的是确定何时执行脚本注入,以便元素在页面中并且没有问题(因此可以从脚本注入中删除setTimeout,只保留最初希望执行的操作).

看起来脚本正在执行,但document.f2没有指向任何东西,您确定在浏览器中执行时该部分工作吗?是的,我通过chrome控制台进行了测试并正常运行。它可能执行得太早,您是否尝试过执行
js.ExecuteScript(“setTimeout(function(){document.f2.submit();},1000);”?我们的想法是在一段时间后执行脚本,以确保一切都“到位”,非常好,真的谢谢:)如果你不介意的话,我会把它作为一个答案发布
js.ExecuteScript("setTimeout(function() { document.f2.submit(); }, 1000);");