尝试调用click时出现NullReferenceException

时间:2017-10-13 09:23:03

标签: javascript c# webbrowser-control

所以我需要在webbrowser控件中按一个按钮,但它给我一个空引用异常

Browser.Document.GetElementById("homebg").InvokeMember("click");

This is my browser

This is the source code in the webbrowser control

我认为我收到了错误,因为内容是由javascript推送的

那么有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您是否测试了null-conditional运营商?这将解决异常。

Browser?.Document?.GetElementById("homebg")?.InvokeMember("click");

如果这样可行,那么您可以尝试一次删除一个问号,以查看从哪里获得例外。

我建议你从:

开始
Browser?.Document?.GetElementById("homebg").InvokeMember("click");

我怀疑你没有名为homebg的元素。

答案 1 :(得分:0)

检查WebBrowser.ObjectForScripting 属性 - 这允许您的java脚本与主机通信。所以每当你的content / html准备就绪时,你应该从javascript调用这个对象的一些方法,它会向主机应用程序发出信号(c#代码)你的浏览器内容已经准备就绪,然后你可以模拟点击事件。

例如,在C#代码中

public void OnContentReady() 
{
    // TODO invoke button click
}

...

// code loading webbrowser
browsercontrol.ObjectForScripting = this;

在您的浏览器中使用js代码

// code that creates the html content
...

// signal the host that content is ready
window.external.OnContentReady();