Управление выпадающим списком JavaScript с помощью powershell - PullRequest
4 голосов
/ 29 апреля 2011

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

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

Использование IE ComObject:

$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? По умолчанию выпадающий список «service», поэтому я не могу сопоставить мой текст со значением, которое мне нужно выбрать. Есть ли другой способ сделать это, который будет использовать существующее значение -> отображение текста?

1 Ответ

3 голосов
/ 30 апреля 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...