2014-05-15 34 views
0

首先,我修复了WebBrowser,现在我在Windows窗体中正确地看到了页面。我浏览了link并将其引用到了IE 11.0,因此我的Windows窗体中的WebBrowser控件是一个IE11.0浏览器实例。WebBrowser DocumentCompleted对我而言无用

我有这个形式的构造函数:

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted); 

然后在事件处理程序

public void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     txtLoad.Text = (Convert.ToInt32((txtLoad.Text)) + 1).ToString(); 
     var webBrowser = sender as WebBrowser; 
     webBrowser.Document.GetElementById("gwt-uid-126").InvokeMember("click"); 
    } 

这一切都始于一个按钮,点击:

void BtnTestClick(object sender, EventArgs e) 
    { 
     webBrowser1.Navigate(@"https://play.google.com/apps/publish/?dev_acc=06010154238306490792#AppListPlace"); 
    } 

的点击调用什么都不做。我尝试了所有列出的方法here而没有。为什么我可以看到我的屏幕上的按钮,但不能在代码中引用它?如果按钮没有加载,为什么documentCompleted会触发?我怎样才能得到按钮?并点击它?

+0

如果您将调用移动到新按钮的单击事件,请等待页面加载,然后单击该按钮 - 它是否工作? –

+0

我也试过,它不工作! – kawa

+0

这太奇怪了。我的意思是我看到那里的按钮!它在哪里? WebBrowser控件是不是跛脚?也许是我,但我试过了WatiN库,它的工作非常流畅,除了你不能隐藏openDialog窗口,因为我需要在后台完成所有工作,而我在我的计算机上做其他事情的时候,却不能隐藏openDialog窗口。 – kawa

回答

2

修复:

webBrowser1.Navigate(@"https://play.google.com/apps/publish/?dev_acc=06010154238306490792#AppListPlace"); 
while (WebBrowser1.ReadyState != WebBrowserReadyState.Complete) { 
     txtLoad.Text = WebBrowser1.ReadyState.ToString(); 
     Application.DoEvents(); 
     System.Threading.Thread.Sleep(1); 
    } 
webBrowser1.Document.GetElementById("gwt-uid-126").InvokeMember("click"); 


有我,即使该文件是没有完全载入WebBrowserDocumentCompleted事件的调用。
例如:
可以说,有网页源代码中2个脚本元素:

<script src="1.js"></script> 
//Here There Is A Call To WebBrowserDocumentCompleted 
<script src="2.js"></script> 
//Here There Is A Call To WebBrowserDocumentCompleted 
............ 
body 
............. 
</html> 
//Here There Is A Call To WebBrowserDocumentCompleted 

的web浏览器调用此事件,他完成加载脚本/样式,甚至后 - 页面是不是真的完全没有加载。

+0

谢谢'Application.DoEvents()'正是我所需要的 – arianoo

相关问题