Torna al Thread
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
#region Fields (2)
bool IsBusy;
bool semaphoreForDocCompletedEvent;
#endregion Fields
#region Constructors (1)
public Form1()
{
InitializeComponent();
}
#endregion Constructors
#region Methods (6)
// Private Methods (6)
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("https://www.axxes.fr/it");
//Sequencing
semaphoreForDocCompletedEvent = WaitForDocumentCompleted();
if (!semaphoreForDocCompletedEvent)
throw new Exception("casino in giro!");
}
private void button2_Click(object sender, EventArgs e)
{
HtmlElement buttonToPress = webBrowser1.Document.GetElementById("e_menuLevel1");
foreach (HtmlElement elem in buttonToPress.FirstChild.All)
{
if (elem.InnerText.ToLower().Contains("area clienti"))
{
buttonToPress = elem;
break;
}
}
object obj = buttonToPress.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);
semaphoreForDocCompletedEvent = WaitForDocumentCompleted();
if (!semaphoreForDocCompletedEvent)
throw new Exception("casino in giro!");
}
private void button3_Click(object sender, EventArgs e)
{
//compilazione campi
HtmlElement campoUtente = webBrowser1.Document.GetElementById("login");
campoUtente.SetAttribute("Value", "stringa_del_nome");
HtmlElement pwd = webBrowser1.Document.GetElementById("password");
pwd.SetAttribute("Value", "stringa_della_passowrd");
//submission
HtmlElement okBtn = webBrowser1.Document.GetElementById("blocident");
foreach (HtmlElement subElem in okBtn.All)
{
if (subElem.GetAttribute("classname").ToLower().Contains("btok"))
{
okBtn = subElem;
break;
}
}
object obj = okBtn.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);
semaphoreForDocCompletedEvent = WaitForDocumentCompleted();
if (!semaphoreForDocCompletedEvent)
throw new Exception("casino in giro!");
}
private void DocCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
IsBusy = false;
return;
}
}
private void Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
IsBusy = true;
}
/// <summary>
/// Questa versione è proprio brutta, perchè DoEvents è una porcata ma funziona tutto bene finchè non tenti di premere il pulsante di chiusura form principale.
/// Inibiscilo!
/// </summary>
/// <returns>a dummy value to be used as sequencer.</returns>
private bool WaitForDocumentCompleted()
{
while (IsBusy)
{
Application.DoEvents();
Thread.SpinWait(1000);
}
return true;
}
#endregion Methods
}
}