S
Shouldercannon
Доброго времени суток!
Есть три ссылки и две учётные записи. Сама задача:
В цикле берём данные первого аккаунта и далее во вложенном цикле идём по ссылкам:
Пока мы идём по ссылка цикл по аккаунтам "остановлен"
1. загружаем стартовую страницу
2. дожидаемся загрузки, вводим регистрационные данные, авторизуемся
3. загружаем страницу магазина
4. дожидаемся загрузки, нажимаем кнопку
5. загружаем страницу выхода
6. дожидаемся загрузки и переходим к следующему аккаунту
Получилась вот такая жесть
Всё бы может ничего, только вот WebBrowser1DocumentComplete под конец уходит в бесконечный цикл + каким-то образом при Accounts[IMas].Login, где IMas = 2 выдирается первая запись из массива с ссылками. IMas - это переменная, которая держит число, с которым мы обращаемся к массиву с аккаунтами, максимум может быть = 1.
Есть три ссылки и две учётные записи. Сама задача:
В цикле берём данные первого аккаунта и далее во вложенном цикле идём по ссылкам:
Пока мы идём по ссылка цикл по аккаунтам "остановлен"
1. загружаем стартовую страницу
2. дожидаемся загрузки, вводим регистрационные данные, авторизуемся
3. загружаем страницу магазина
4. дожидаемся загрузки, нажимаем кнопку
5. загружаем страницу выхода
6. дожидаемся загрузки и переходим к следующему аккаунту
Получилась вот такая жесть
Код:
unit frm_Main;
...
type
TAccounts = Record
Login: String;
Password: String;
end;
type
TURLs = Record
URL: String;
end;
var
FormMain: TFormMain;
HTMLSource: String;
ITimerGetTimeInterval, IMas: Integer;
LoadComplete: Boolean;
Accounts: Array[0..1] of TAccounts;
URLs: Array[0..2] of TURLs;
implementation
{$R *.dfm}
...
procedure TFormMain.FormCreate(Sender: TObject);
begin
Accounts[0].Login := 'login1';
Accounts[0].Password := 'pass1';
Accounts[1].Login := 'login2';
Accounts[1].Password := 'pass2';
URLs[0].URL := 'http://localhost';
URLs[1].URL := 'http://localhost/account/market';
URLs[2].URL := 'http://localhost/account/exit';
end;
procedure TFormMain.PBBGetSilverClick(Sender: TObject);
var
I, I2: Integer;
Flags: OleVariant;
begin
I := 0;
IMas := I;
LoadComplete := True;
while I <> Length(Accounts) do
begin
I2 := 0;
while I2 <> Length(URLs) do
begin
if LoadComplete then
begin
LoadComplete := False;
// Загружаем страницу
WebBrowser1.Navigate(URLs[I2].URL);
Application.ProcessMessages;
Inc(I2);
end
else Application.ProcessMessages;
end;
Application.ProcessMessages;
Inc(I);
IMas := I;
end;
end;
procedure TFormMain.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; const URL: OleVariant);
var
I, I2: Integer;
Form: OleVariant;
begin
if URL = WebBrowser1.LocationURL then
begin
// Исходный код страницы
HTMLSource := WB_GetHTMLCode(WebBrowser1);
// Заполняем поля на главной странице и авторизовываемся
if Pos('Welcome', HTMLSource) > 0 then
begin
for I := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do
begin
Form := WebBrowser1.OleObject.Document.Forms.Item(I).elements;
for I2 := 0 to Form.Length - 1 do
begin
if Form.Item(I2).name = 'log_email' then Form.Item(I2).value := Accounts[IMas].Login
else if Form.Item(I2).name = 'pass' then Form.Item(I2).value := Accounts[IMas].Password;
end;
// Авторизация
for I2 := 0 to Form.Length - 1 do
begin
if ((Form.Item(I2).type = 'submit') and (Form.Item(I2).value = 'Войти')) then
begin
Form.Item(I2).Click;
end;
end;
end;
end;
// Заходим на склад и продаём
if Pos('Магазин', HTMLSource) > 0 then
begin
for I := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do
begin
Form := WebBrowser1.OleObject.Document.Forms.Item(I).elements;
for I2 := 0 to Form.Length - 1 do
begin
if ((Form.Item(I2).type = 'submit') and (Form.Item(I2).name = 'sell')) then
begin
Form.Item(I2).Click;
end;
end;
end;
end;
LoadComplete := True;
end;
end;
Последнее редактирование: