Здравствуйте, есть очень наболевший вопрос, который пытаюсь решить вот уже больше месяца.

Есть класс для управления IE из PHP приложения на локальной машине.
Проблема в том, что он не видит большинство форм для автозаполнения.

Перерыл кучу документации пытаясь сделать чтото подобное в связке XUL+php.

Или вообще возможно ли такое сделать в ксуле и как.

Нужно автозаполнение форм, причём поэтапное. Сначала приложение выполняет регистрацию на сайте, потом идёт в аккаунт, после чего заполняет нужные формы, загружает картинки и выходит из аккаунта. После чего КУКИ должны удаляться.

Помогите пожалуйста!!!



Пример класса на ПХП (работает локально под виндой)

Выделить код

Код:

//class 
class MechanizeIE {
    var $ie = NULL;
    
    

function StartIE() {
    $this->ie = new COM("InternetExplorer.Application")
                or die("Unable to start IE");

    /* set the co-ordiantes
       for the IE window */
    $this->ie->left = 400;
    $this->ie->top  = 0;
    $this->ie->width  = 600;
    $this->ie->height = 400;

    /* turn off all toolbars */
    $this->ie->menubar   = 1;
    $this->ie->toolbar   = 1;
    $this->ie->statusbar = 1;

    /* make IE visible */
    $this->ie->visible = 1;
}


function navigateIE ($url) {
    $this->ie->navigate($url);
    $this->wait_while_busy();
}





function setformIE ($textbox, $value) {
  $index = 0;
  $cnt   = 0;
  $doc   = $this->ie->Document;
  $forms = $doc->forms;

  for($i = 0; $i < $forms->length; $i++) {
    $form = $forms->item($i);

    for($j = 0; $j < $form->elements->all->length; $j++)
    {
      $e_name = $form->elements->all{$j}
                     ->getAttribute("name");

      if($e_name == $textbox) {
        if($index == $cnt) {
          $form->elements->all{$j}->{value} = $value;
          return;
        } else {$cnt++;}
      }
    }
  }
  print "could not find form element : " . $textbox . "\n";
}



function pushbuttonIE ($button) {
  $index = 0;
  $cnt   = 0;
  $doc   = $this->ie->Document;
  $forms = $doc->forms;

  for($i = 0; $i < $forms->length; $i++) {
   $form = $forms->item($i);

   for($j = 0; $j < $form->elements->all->length; $j++) {
    $e_name = $form->elements->all{$j}
                   ->getAttribute("value");
    $e_type = $form->elements->all{$j}
                   ->getAttribute("type");

    if($e_name == $button and $e_type == submit) {
      if($index == $cnt) {
        $form->elements->all{$j}->click();
        $this->wait_while_busy();
        return;
      } else {$cnt++;}
    }
   }
  }
  print "could not find form button : " . $button . "\n";
}
}





//main script
include 'classMechanizeIE.php';

$myIE = &New MechanizeIE;


$myIE->StartIE();
$myIE->navigateIE('mysite.com');


$myIE->setformIE('username', 'user');
$myIE->setformIE('password', 'pass');


$myIE->pushbuttonIE('Login');

И все молчат... :(

Такое уже не на одном форуме происходит.

Что все знают только как кнопочки для ФФ в XUL-e делать? :)

lexesv

И все молчат... :(

Дык лето ещё - народ отдыхает. А некоторые не каждый день сюда заходят.

Что все знают только как кнопочки для ФФ в XUL-e делать? :)

Не, не все.-)
А что делать, если большинство только вопросы задаёт, а само ни фига не пишет инструкции по.

Перерыл кучу документации пытаясь сделать чтото подобное в связке XUL+php.

на xul бессмысленно использовать вне chrome. забавно было бы поглядеть на то, чего вы пытались делать ;)

Пример класса на ПХП

насколько я понял, тут используются технологии .NET. читайте/ищите маны. сомневаюсь, что вам тут кто-то поможет с данным вопросом.

работает локально под виндой

на xpcom нужно использовать, а не на php...

Каша какая-то. Зачем для загрузки страниц, отправки форм и т.д., имея PHP, использовать браузер?

на xpcom нужно использовать, а не на php

Да я и рад бы, но хотяб один пример можно увидеть, а то самих манов маловато, особенно если никогда на XUL не программировал. Вот на ПХП могу много чего написать, но ПХП как известно серверный язык, а тут вот пришлось столкнуться с такой вот задачей.

В общем вопрос немного перефразирую:
function setformIE ($textbox, $value) как написать её аналог для XUL?

а по поводу

Перерыл кучу документации пытаясь сделать чтото подобное в связке XUL+php.

на xul бессмысленно использовать вне chrome. забавно было бы поглядеть на то, чего вы пытались делать

вот
http://www.moztips.com/wiki/index.pcgi?page=XulPhpMySQL
http://www.phphacks.com/content/view/52/33/

lexesv пишет

В общем вопрос немного перефразирую:
function setformIE ($textbox, $value) как написать её аналог для XUL?

на xul пишется полько интерфейс. сам код обычно пишется на js.
вообще, хороший вопрос ;)
http://developer.mozilla.org/

Added Пнд 13 Авг 2007 14:04:58 :

вот
http://www.moztips.com/wiki/index.pcgi?page=XulPhpMySQL
http://www.phphacks.com/content/view/52/33/

угу. внизу смотрели? :)

угу. внизу смотрели?

Смотрел, там написано, что нужно через JS

НО http://www.phppatterns.com/docs/develop/xul_to_phpgtk

и вот такое

Выделить код

Код:

<script type="application/x-php"
        src="c:htdocsxul2gtkfunctions.php" />

Помоему тут речь идет о Луксоре, алтернативной реализации XUL (не связанно с Мозилла)
советую посетить http://xul.sourceforge.net/ и http://luxordev.com/ для деталей.

Очень все легко пишется, достаточно установить в PHP вывод заголовка XUL

Выделить код

Код:

<?php header( "Content-type: application/vnd.mozilla.xul+xml" ); ?>

и потом пиши все на пхп а выводи через echo XUL'кий код.

HeiHeShang
интересно, вы первый пост читали?

Конечно читал. Можно ли сделать, отвечаю можно. Достаточно установить заголовок и писать код так же как и писал на пхп до этого.