EDİT: Sorunu çözdüm. Kodda ufak biraz oynama yaparak formun olup olmadığı kontrolünü yaparak if-else için yeni bir emir atadım. Aşağıda benzeri sorunu yaşayanlar olursa diye görsel bırakıyorum:
Bir oyun için kendi çapımda beni idare edecek kadar bir bot yazdım. Ancak bir konuda takıldım. Aşağıda görselini bırakacağım kodlama sorunsuz şekilde çalışıyor. Ancak nasıl oluyorsa bazen 40 dakika sonra bazen de 10 dakika sonra hata veriyor. Hep aynı kod ile hata kodunu gösteriyor. Bu koda try-catch versem bile işe yaramıyor çünkü if-else döngülerince aranan şartlar bu kodun çalışmasını gerektiriyor. Saçma olan kısım ise ben zegar3 ID'sine sahip kısmı bilerek bu bölüme ekledim ki burada yapması gereken aslında şudur;
label2'de "Keşif seferine geç" yazıyorsa if olarak işleme başlayacak ve form1 içerisinde ki input butonuna tıklayarak işlemini gerçekleştirecek. İlk başta hatayı acaba o an browser başka bir sekmeye filan geçiyor ya da başka sekmede mi kalıyor diye düşünerekten saldırı öncesinde gideceği URL ile gittiği URL eşit mi diye kontrol için if koydum. Burada bir mantıklı çıkış bulamıyorum bunu nasıl çözebiliriz bilen varsa sevinirim.
if (label2.Text == "Keşif seferine geç")
{
await Task.Delay(2000); // wait for 5 seconds
//////////////////
///
HtmlElement linkElement = webBrowser1.Document.GetElementById("zegar3");
var zegar3 = webBrowser1.Document.GetElementById("zegar3");
var targetUrl = zegar3.Parent.GetAttribute("href");
if (webBrowser1.Url.ToString().EndsWith(targetUrl))
{
HtmlElement formElement = webBrowser1.Document.GetElementsByTagName("form")[1];
// Get a collection of input elements within the form element
HtmlElementCollection inputElements = formElement.GetElementsByTagName("input");
// Iterate through the collection of input elements
foreach (HtmlElement inputElement in inputElements)
{
// Check if the input element has the class "expedition_button"
if (inputElement.GetAttribute("className") == "expedition_button")
{
// Simulate a click on the input element
inputElement.InvokeMember("click");
listBox1.Items.Insert(0, DateTime.Now.ToString("dd.MM.yy - HH:mm") + " Keşif Saldırısı Gerçekleşti");
timer3.Start();
// Exit the loop
break;
}
}
}
else
{
listBox1.Items.Insert(0, DateTime.Now.ToString("dd.MM.yy - HH:mm") + " Keşif Saldırısı sorunlu");
timer3.Start();
}