Хочу сделать автоклики в браузере по ссылкам. Вот код:
/*
* Created by SharpDevelop.
* User: Любовь
* Date: 04.06.2015
* Time: 7:25
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace AutoClicker
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
Thread t = new Thread(clicks);
t.Start();
}
public void clicks()
{
Thread.Sleep(5000);
//Клик по ссылке "правила"
clickOnTheLink(webBrowser1,"правила");
Thread.Sleep(5000);
//Клик по ссылке "о сайте"
clickOnTheLink(webBrowser1,"о сайте");
}
//Клик по ссылке с текстом
public void clickOnTheLink(WebBrowser webBrowser, String s)
{
HtmlElementCollection elements = webBrowser.Document.GetElementsByTagName("a");
Console.Beep();
foreach(HtmlElement a in elements)
if (a.InnerText == s)
a.InvokeMember("click");
}
}
}
При первом вызове в потоке метода clickOnTheLink появляется окно с вот такой ошибкой:
System.InvalidCastException: Заданное приведение является недопустимым.
в System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation()
в System.Windows.Forms.WebBrowser.get_Document()
в AutoClicker.MainForm.clickOnTheLink(WebBrowser webBrowser, String s) в c:\Users\Любовь\Documents\SharpDevelop Projects\AutoClicker\MainForm.cs:строка 54
в AutoClicker.MainForm.clicks() в c:\Users\Любовь\Documents\SharpDevelop Projects\AutoClicker\MainForm.cs:строка 41
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
Подскажите, как быть?