Изменение выбранной опции в HTML :: Форма

0

Я работаю над сценарием автоматической формы отправки. Он входит на сайт поставщика и заполняет поля формы. При попытке отправить желаемый результат будет отображен номер билета, который подтверждает, что форма отправлена, и запрос обрабатывается их службой поддержки.

Однако форма не отправляется правильно (подтверждение не отображается), и я подозреваю, что это вызвано одним из входов, который является SELECT.

Вот код, который я использую для установки этого поля:

$forms[3]->value('ProductList','-2');

Это, к сожалению, не влияет на подготовленную форму, сбросив $ form [3], я вижу следующее:

 [...]
    bless({
     'onchange' => ' checkKC(document.all.ProductList, \'~0\'); prodExpand();',
     'current' => 1,
     'menu' => [
      {
         'seen' => 1,
         'value' => '~0',
         'name' => '<Please select>'
      },
      {
         'seen' => 1,
         'value' => '-2',
         'name' => 'Product not found.... Search more'
      },
      {
         'value' => '-1',
         'name' => '------------------------------------'
      },
      {
         'value' => 'Product1',
         'name' => 'Product 1 Name'
      }
     ],
     'name' => 'ProductList',
     'id' => 'ProductList',
     'idx' => 1,
     'type' => 'option'
    }, 'HTML::Form::ListInput' ),
 [...]

Использую ли я правильный метод $ forms [3]? (он был создан HTML :: Form-> parse ($ pageresult) btw) Или есть ли какой-либо другой метод, который я должен попробовать? Я не могу найти документацию для HTML :: Form :: ListInput

Спасибо за любой совет

  • 0
    document.all для IE 4.x и 5.0. Вы не должны использовать это на чем-то современном.
  • 0
    Спасибо, но это не имеет ничего общего с основной проблемой и происходит с веб-страницы хоста.
Теги:
forms
http

1 ответ

1
Лучший ответ

Рассмотрите возможность использования WWW::Mechanize для обработки формы, которая занимает более одного шага. Таким образом, вы можете включить процесс входа в свой скрипт, а также перейти к форме и, конечно, получить результат.

Или, если вам нужно работать с JavaScript, используйте WWW::Mechanize::Firefox.

  • 0
    Привет @Miller, спасибо за ответ. Проблема заключается в том, что форма использует Javascript (что делает поле поиска видимым в случае выбора -2 в раскрывающемся списке выше, а затем преобразуется в новое раскрывающееся меню, когда набрано достаточное количество символов), и поэтому я предпочел бы просто заполнить все возможные поля ввода. Я даже прослушал то, что публикуется именно на целевой странице с помощью LiveHTTPHeaders, чтобы узнать, есть ли какие-либо посты, добавленные в поля. Не уверен, что WWW :: Mechanize может обрабатывать Javascript.
  • 0
    Да, есть метод для работы с Javascript, посмотрите мой исправленный ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню