Недавно я начал новый проект, и он работал корректно с помощью Visual Studio 2015 «webBrowser». К сожалению, браузер по умолчанию не поддерживает некоторые веб-элементы, которые мне нужны для его запуска. Поэтому я решил искать альтернативу браузера, которая могла бы запускать эти элементы.Как запустить GeckoFx «GetElementById» funtion в C#?
После выполнения некоторых исследований я решил пойти с GeckoFx, главным образом потому, что я читал, что его командные функции работают очень похоже на оригинальный webBrowser (такие команды, как GetElementById).
Я пытаюсь создать программу, которая автоматически вводит меня в систему «login.live.com». Я не уверен, почему, но когда он запускает код, ввод пароля «пароль» работает, но письма нет. Пожалуйста, помогите мне понять, почему!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace XLP_2_11_16__2_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//This is not the actual folder location. Part of it was suppstituded by "..." for safety reasons.
Gecko.Xpcom.Initialize(@"C:\...\bin\Debug\xulrunner");
}
private void Form1_Load(object sender, EventArgs e)
{
geckoWebBrowser1.Navigate("https://login.live.com");
}
private void button1_Click(object sender, EventArgs e)
{
//Actual email and password was substituted for safety reasons.
string email = "[email protected]";
string pass = "mypassword";
geckoWebBrowser1.Document.GetElementById("i0116").SetAttribute("value", email);
geckoWebBrowser1.Document.GetElementById("i0118").SetAttribute("value", pass);
geckoWebBrowser1.Navigate("javascript:void(document.forms[0].submit())");
}
private void geckoWebBrowser1_Click(object sender, EventArgs e)
{
}
private void geckoWebBrowser1_DocumentCompleted(object sender, Gecko.Events.GeckoDocumentCompletedEventArgs e)
{
}
public void Delayed(int delay, Action action)
{
Timer timer = new Timer();
timer.Interval = delay;
timer.Tick += (s, e) => {
action();
timer.Stop();
};
timer.Start();
}
}
}
Это форма конструкции:
Если кто-нибудь знает лучшего способа сделать это, пожалуйста, дайте мне знать ПОЖАЛУЙСТА ПОМОГИТЕ !!