Selenium:在页面上调用javascript函数

时间:2017-01-02 11:17:44

标签: c# selenium selenium-webdriver

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

这是我拥有的元素:

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

这是电话:

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript("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)

如何正常执行此操作?

1 个答案:

答案 0 :(得分:2)

有时会发生脚本执行得太早而页面中的某些元素尚未到位(从而产生错误)。

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

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

在确认问题确实是时间之后,接下来要做的是确定何时执行脚本注入以使元素在页面中并且没有问题(因此您可以从脚本注入中删除setTimeout并且只保留您最初要执行的操作。)