Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2017, 18:29   #1
BoNaPaRtD
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 16
По умолчанию Ошибка скрипта, который должен переходить по ссылке

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('www.seosprint.net');

end;

procedure TForm1.Button2Click(Sender: TObject);
var
log:integer;
html_tag:variant;
begin
 html_tag:=WebBrowser1.OleObject.Document.forms.item(0).elements;
 for log :=0 to (html_tag.length-1) do
 begin
   if html_tag.item(log).id='mnu302' then
   html_tag.item(log).click;

 end;

end;

end.
Скрипт должен находить на странице id mnu302 и кликать туда, но он выдает ошибку
BoNaPaRtD вне форума Ответить с цитированием
Старый 14.03.2017, 21:01   #2
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Код:
html_tag:=WebBrowser1.OleObject.Document.forms.item(0).elements;
Вы обращаетесь к объекту Document.
А вы уверены, что он уже существует?
Такие вещи надо проверять, именно для этого существует событие OnDocumentComplete...
kropotkina-alice вне форума Ответить с цитированием
Старый 15.03.2017, 11:08   #3
BoNaPaRtD
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 16
По умолчанию

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Код:
html_tag:=WebBrowser1.OleObject.Document.forms.item(0).elements;
Вы обращаетесь к объекту Document.
А вы уверены, что он уже существует?
Такие вещи надо проверять, именно для этого существует событие OnDocumentComplete...
Я пока что только учу delphi и там где я учу ничего не объясняли про то, что значит document,forms,item и поэтом я так и не понял что это. Создал событие ondocumntcomplete в событиях браузера, но все равно при запуске программы та же ошибка. В коде этого события надо еще что то писать или в чем проблема?
BoNaPaRtD вне форума Ответить с цитированием
Старый 15.03.2017, 11:44   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от BoNaPaRtD Посмотреть сообщение
Я пока что только учу delphi
Его уже поздно учить, это лет 15 назад имело смысл

Цитата:
Сообщение от BoNaPaRtD Посмотреть сообщение
там где я учу ничего не объясняли про то, что значит document,forms,item и поэтом я так и не понял что это
TWebBrowser это в основном стандартный компонент винды (IE), а не Дельфи. Информацию по нему лучше искать в MSDN и т.п., например где-то примерно тут https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx


Вообще писать бота используя этот компонент довольно геморойно.
TWebBrowser в первую очередь предназначен для отображения, а для автоматизации есть другие инструменты, например Selenium (в Дельфи вроде не доступен), PhantomJS, ...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.03.2017, 12:30   #5
BoNaPaRtD
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Его уже поздно учить, это лет 15 назад имело смысл


TWebBrowser это в основном стандартный компонент винды (IE), а не Дельфи. Информацию по нему лучше искать в MSDN и т.п., например где-то примерно тут https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx


Вообще писать бота используя этот компонент довольно геморойно.
TWebBrowser в первую очередь предназначен для отображения, а для автоматизации есть другие инструменты, например Selenium (в Дельфи вроде не доступен), PhantomJS, ...
Ну я понимаю, что есть другие варианты, но мне нужно знать почему получается ошибка, ведь это возможно сделать, а мне выдает ошибку
BoNaPaRtD вне форума Ответить с цитированием
Старый 15.03.2017, 12:33   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ошибка скорее всего говорит, что вы попытались обратиться к объекту по nil указателю.

Поставьте breakpoint на ту строку, посмотрите значения переменных в этот момент и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.03.2017, 13:03   #7
BoNaPaRtD
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ошибка скорее всего говорит, что вы попытались обратиться к объекту по nil указателю.

Поставьте breakpoint на ту строку, посмотрите значения переменных в этот момент и т.п.
Откуда вы взяли nil я незнаю, я вроде к нему не обращался. По повод breakpoint, то что я нашел в гугле, это штука которая будет выполнять действия до тех пор пока они не закончатся и после этого остановит программу, но к чему это все здесь?
BoNaPaRtD вне форума Ответить с цитированием
Старый 15.03.2017, 13:22   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

https://ru.wikipedia.org/wiki/%D0%9E...BC%D0%BC%D1%8B
http://www.helloworld.ru/texts/comp/...ugerDelphi.htm
https://habrahabr.ru/post/178007/ (первые 2 абзаца мало относятся к этой статье)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.03.2017, 14:40   #9
BoNaPaRtD
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Прочитал все это, еще почитал в других источниках про это все. Научился узнавать значения переменных, хотя значения я так и не получил, но все же. Так же научился создавать брикпоинты и останавливать работу на определенном месте, здесь все получилось. Но возникает вопрос, а что теперь делать со скриптом то? Как можно сделать так что бы он кликал на кнопку? Ошибка продолжается
BoNaPaRtD вне форума Ответить с цитированием
Старый 19.03.2017, 14:56   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Для начала узнать где nil.
Такая ошибка ("Access vioation... Read of address 0000...") скорее всего говорит о том, что вы где-то попытались обратиться к объекту по указателю, в котором в этот момент лежит nil.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При использовании скрипта не выполняется переход по ссылке masalex Помощь студентам 0 10.12.2016 14:06
Оптимизация скрипта на Perl, который генерирует самую короткую программу на языке Brainfuck, выводящую заданный текст. timcryt Perl 1 13.07.2016 10:49
Помогите решить задачу (Delphi 7) - Нужно построить график, который должен полностью соответствовать картинке QeTro! Помощь студентам 5 19.12.2015 12:51
код, который должен открывать файл, находить в нем определенный символ и заменять его на другой, не записывает в файл Dima-War Общие вопросы C/C++ 2 14.12.2013 21:35
должен подгрузиться скрипт который бы создал и вставил в этот див <iframe></iframe> Beni JavaScript, Ajax 1 05.08.2009 14:30