Обновить сайт с таймером в C # - CefSharp - PullRequest
0 голосов
/ 13 мая 2019

Я хочу создать бота для веб-сайта, на этом сайте добавить деталь с id , я хочу, чтобы, когда деталь добавлялась на сайт, нажимали на кнопку этой детали. Мой код проверяет веб-сайт, чтобы найти этот идентификатор , пока этот идентификатор не будет найден, веб-сайт обновляется, и когда идентификатор найден, нажмите кнопку на сайте.

Это мой код:

public ChromiumWebBrowser browser;

public void InitBrowser()
{
    timer.Stop();
    browser.Reload();

    browser.FrameLoadEnd += (sender, args) =>
    {
        //Wait for the MainFrame to finish loading
        if (args.Frame.IsMain)
        {
            var pageQueryScript = @"
            (function(){
                var selection = document.querySelector('#test');
                if (selection !== null) {
                    return '1';
                }
            })()";
            var scriptTask = browser.EvaluateScriptAsync(pageQueryScript);
            scriptTask.ContinueWith(a =>
            {
                if (a.Result.Success && a.Result.Result != null)
                {
                    timer.Stop();
                    var loginScript = @"document.querySelector('button').click();";
                    browser.EvaluateScriptAsync(loginScript).ContinueWith(b =>
                    {
                        timer.Stop();
                        Console.Write("*");
                    });
                }
                else
                {
                    timer.Start();
                }
            });
        }
    };
    timer.Start();
}

public Form1()
{
    Cef.Initialize(new CefSettings());
    browser = new ChromiumWebBrowser("file:///G:/2.html");
    this.Controls.Add(browser);
    browser.Dock = DockStyle.Fill;
    browser.Height = 500;
    browser.Width = 500;
    browser.Location = new Point(0, 0);

    InitializeComponent();
}

private void timer_Tick(object sender, EventArgs e)
{
    InitBrowser();

}

private void Form1_Load(object sender, EventArgs e)
{
    timer.Start();
}

Работает корректно , но нажимает на номер кнопки обновления сайта Я хочу нажать на эту кнопку один раз. как я могу решить эту проблему.

...