Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ConnectToTenderGov
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Connect connect = new Connect();
webBrowser1.Navigate("https://tender.me.gov.ua/EDZFrontOffice/menu/ru/");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
webBrowser1.Document.GetElementById("login:login").SetAttribute("value", "***@***.com");
webBrowser1.Document.GetElementById("login:password").SetAttribute("value", "***");
webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.Document.GetElementById("login:loginButtonPopup").InvokeMember("click");
}
}
}
Пытался реализовать модуль авторизации, требование - должны были использоваться cookie.
Вероятно, на странице есть javascript. Пока все скрипты не отработают, не получить окончательный вид страницы.
По этой же причине событие WebBrowser.DocumentCompleted будет срабатывать несколько раз.
Возможно, на странице в данной форме есть скрытые поля (анти-csrf или типа того), поэтому заранее подготовить запрос, не прочитав страницу, невозможно. Или есть хитрый обработчик onclick, который что-то добавляет.
unit Htmlparser;
procedure THtmlparser.Start(stream:tstream);
var
temp:string;
v:olevariant;
begin
if self.CoInit then
coinitialize(nil);
try
temp:=memorystreamtostring(tmemorystream(stream));
if self.BlockThirdParty then
temp:=stringreplace(temp,'src','',[rfreplaceall]);
try
V:=VarArrayCreate([0,0], varVariant);
V[0]:=temp;
Doc.Write(PSafeArray(TVarData(v).VArray));
self.InnerHtml:=doc.body.innerHTML;
self.OuterHtml:=doc.body.outerhtml;
self.OuterText:=doc.body.outertext;
self.InnerText:=doc.body.innertext;
except
end;
finally
if self.CoInitialized then
couninitialize;
end;
end;
По этой же причине событие WebBrowser.DocumentCompleted будет срабатывать несколько раз.
Короче, пока всё не загружено, страница может вести себя неадекватно.
(_O_)
Конардо, ну-ка, вправь, я нагнусь...