2016-04-26 15 views
18

Ich muss einige Aktionen auf der Webseite einer anderen Person auslösen. Ich habe diesen Code so weit:Schließen Sie das Dialogfenster auf der Webseite

IHTMLElementCollection DeleteCollection = 
    (IHTMLElementCollection)myDoc.getElementsByTagName("a"); 

foreach (HTMLAnchorElement buttonDelete in DeleteCollection){ 
    if (buttonDelete.title != null && buttonDelete.title.StartsWith("Delete")){ 
     buttonDelete.click(); 
      // problem goes here 
     myDoc.activeElement.click(); 
     SendKeys.Send("{ENTER}"); 
    } 
} 

Dieser Dialog erscheint:

enter image description here

Ich versuchte myDoc.activeElement.click(); und SendKeys.Send("{ENTER}"); aber der Dialog scheint aus der Seite zu sein, also ich weiß nicht, wie man die OK Taste auslöst. Wie kann ich das Fenster schließen?

Antwort

13

Sie können einen Browserdialog nicht programmatisch schließen. Was Sie tun können, ist Browser-Popup-Verhalten zu entführen. Dies könnte für Sie funktionieren:

window.confirm=function(){ return true; }; 
window.alert=function(){ return true; }; 
window.prompt=function(){ return "textOfMyChoice"; }; 

Im Allgemeinen, fügen Sie dieses Javascript ein, bevor Sie auf Ihre Schaltflächen klicken. Wenn Sie das Popup-Verhalten später wiederherstellen möchten, speichern Sie sie in einer anderen globalen Variablen.

+1

Nice one !! ... Es funktionierte mit 'ie.Navigate (" javascript: (function() {window.confirm = function() {return true}})() ")' und dann 'anchor.click();' –

+0

Ich dachte mir es würde funktionieren. Beachten Sie, dass es nicht die Antwort auf die Frage ist, wie man "Dialogfenster auf Webseite schließen" kann, sondern eine Antwort, wie man "Popup-Dialon auf Webseite verhindert" –

+0

Wirklich einfach und beeindruckend !! .. Ich hatte nie 'confirm' zur Kenntnis genommen und diese Methoden waren auf' window' Objekt –

0

Ich nehme an, dass jedes Anker-Tag in Ihrem Beispiel einen nativen JavaScript-Bestätigungsdialog hat. Sie schließen dieses Dialogfeld nicht programmgesteuert.

Aber Sie können Javascript für alle Ankerelemente ändern und den Dialog mit Ihrem benutzerdefinierten jQuery-Dialogfeld ersetzen. Auf diese Weise können Sie die volle Kontrolle über diesen Dialog haben: in der Nähe, verstecken, set timeout etc etc.

<a href="..." onclick="return confirm('are you sure?')" ... >...</a> 
Trans

zu

<a href="..." onclick="return openMyjQueryDialog('are you sure?')" ... >...</a> 

So können Anwender mit normalen Verhalten fortsetzen, Ihr Skript kann die volle Kontrolle über alle Dialogelemente übernehmen.

+0

Wie würde er Inhalte innerhalb _someon's anderer Webseite_ aktualisieren? Außerdem erwähnte er jQuery nicht –

Verwandte Themen