Solved

Ask to my C# application to wait until an action is taken on a Javascript Alert using mshtml

Posted on 2008-10-23
3
907 Views
Last Modified: 2013-12-17
Hi I am bulding an application that opens an IE browser and fill fields out automaticaly using Microsoft.mshtml but when it comes to click on the Next button an Javascript alert open confirming the adress with a yes/no.

How to, I either tell the application to click Yes automaticaly then wait the action to click on the Next button again

My main issue is to wait till the user click yes on the alert windows then tell the application to click on the next button again.

If you could fix both of my problem, it would be awsome.

any ideas??

Thanks

Here is my code snippet:
Object o = null;
            Object URL = "https://eshiponline.purolator.com/ShipOnline/SecurePages/Public/FormsLogin.aspx";
            mshtml.HTMLDocumentClass doc;
 
            InternetExplorer ie = new InternetExplorer();
            ie.Visible = true;
            ie.Navigate2(ref URL, ref o, ref o, ref o, ref o);
 
            while (ie.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE)
            {
                Application.DoEvents();
                System.Threading.Thread.Sleep(50);
            }
 
            // get the document
            doc = (mshtml.HTMLDocumentClass)ie.Document;
 
            mshtml.HTMLInputElementClass el = null;
 
            // Login
            ieValue("ctl00$CPPC$Username", "username", el, doc); //
            ieValue("ctl00$CPPC$Password", "password", el, doc); //
            ieClick("ctl00$CPPC$imgLogin", el, doc); //         
 
                // Check if shipTo Canada, Else fill field, show Browser
                if (d1_ctl00_CPPC_ctrlShipToAddress_ddlCountry.Text == "Canada")
                {
                    // Filling text box from the first page.
                    fillTextBox("p1_", el, doc);
 
                    // Wait If Have to change Shipped From
                    if (ch_fromDefault.Checked != true)
                    {
                        ieClick("ctl00$CPPC$btnNext", el, doc); //
 
//this is at this point that the alert appear. After clicking yes. I need to call ieClick("ctl00$CPPC$btnNext", el, doc); // again
 
                    }
                    else
                    {
                        ie.Visible = true;
                        ieJavascript("ctrlShipFromAddress_Edit();", el, ie);
                    }
                    
                }
                else
                {
                    fillTextBox("p1_", el, doc);
                    Application.Exit();
                    return;
                }

Open in new window

0
Comment
Question by:maxleb
3 Comments
 
LVL 2

Accepted Solution

by:
AshleighGreen earned 500 total points
ID: 22990333
Hello,

Get the user to confirm (Yes/No) with a confirmation box.

i.e.
var answer = confirm("Do you want to click next?"

you can then use answer:
i.e.
if(answer)
{
  //click button that causes page load
  document.getElementById('btnNext').click();
}

That way the action only happens if the user clicks ok in the confirmation box.

I know what I've written is in javascript, but it should be pretty easy to convert to mshtml if required. You could also leave it as JS and make it a function you call from mshtml. Plenty of options, but that's the general technique I'd recommend using to trigger .net actions such as confirmation boxes from javascript.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question