Управление выпадающим списком javascript с помощью powershell

#javascript #internet-explorer #com #powershell

#javascript #internet-explorer #com #powershell

Вопрос:

Итак, я только сегодня начал играть с Powershell, и я искал, но не могу найти ответ. Я даже не уверен, что смотрю в нужном месте.

Мне нужно использовать powershell, чтобы выбрать правильную комбинацию в некоторых выпадающих списках. Один выпадающий список представляет собой список компаний, а другой — список служб. Список служб заполняется в зависимости от выбранной компании.

Использование сомобъекта IE:

 $company = $doc.getElementById("id_companyselection")
$service = $doc.getElementById("id_companyservice")

foreach ($Item in $company) {
  if ($Item.text -eq "name_of_company") {
    $shippingMethod.value = $Item.value
  }
}
  

Есть ли способ заставить Javascript зарегистрировать событие onchange? По умолчанию раскрывающийся список «сервис», поэтому я не могу сопоставить имеющийся у меня текст со значением, которое мне нужно выбрать. Есть ли другой способ сделать это, который будет использовать существующее значение -> сопоставление текста?

Комментарии:

1. Что вы имеете в виду под «выпадающим списком службы»?

Ответ №1:

Я столкнулся с этим на своей последней работе и так и не нашел отличного решения. Проблема в том, что при изменении .value вы просто делаете это в DOM, поэтому, как вы обнаружили, JavaScript не замечает изменения.

Я нашел чрезвычайно хакерский способ заставить это работать — отправить ключи элементу. У меня нет кода передо мной, поэтому я не могу сказать вам точный синтаксис. Это работает, потому что JavaScript видит это так же, как если бы ввод был получен из буфера клавиатуры, и соответствующим образом обновится.

Это было бы не так уж плохо, если бы не следующий недостаток: страница IE должна быть видимой и активной, чтобы ключи отправки работали — вы не можете просто отправить ключи COM-объекту. Вы делаете COM-объект видимым, затем выбираете процесс, после чего можете отправлять ключи в это окно. Очевидно, что это довольно хрупкое решение, из-за которого пользователь не может выполнять несколько задач во время выполнения скрипта. Я надеюсь, что у кого-то еще есть более элегантный метод. 🙂

В вашем примере раскрывающегося списка, а не текстового поля, вам, вероятно, придется выбрать поле, а затем отправить массивы для перехода к другим значениям раскрывающегося списка.