Выбор выпадающих значений программно - PullRequest
0 голосов
/ 08 января 2012

Это URL, над которым я работаю

http://www.bkstr.com/CategoryDisplay/10001-9604-10311-1?demoKey=d

Это выпадающие значения:

Выберите вашу программу: Все (постоянная)

Выберите ваш термин: весна 2012 (постоянная))

Поиск по идентификатору курса или выбору вашего отдела: содержит список значений (мне нужно выбрать это значение по одному из моей программы)

Появится следующее раскрывающееся меню «Поиск по идентификатору курса или выберите ваш курс» в зависимости от того, что мы выбрали в предыдущем раскрывающемся списке.

Это та часть, которую я пытаюсь автоматизировать.

Хорошо, после нажатия кнопки «Отправить» я получаю URL

http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10311&langId=-1&programId=755&termId=100021416&divisionDisplayName=%20&departmentDisplayName=ADV&courseDisplayName=3001&sectionDisplayName=10182&demoKey=d&purpose=browsea

Здесь я вижу, как выбранные значения передаются в качестве параметров запроса, но тогда возникает проблема:

  • Каждый раз, когда в раскрывающийся список добавляется какое-то новое значение, я должен изменить свой код, чтобы включить это значение

Как я могу программно (динамически) циклически проходить через Департамент и его последующие курсы БЕЗ жесткого кодирования значений, ранее указанных в параметре моего запроса? Любое руководство?

Ответы [ 2 ]

1 голос
/ 14 января 2012

Используйте Selenium RC, предполагая, что у вас есть доступ к серверу с графическим интерфейсом (он не обязательно должен быть тем же сервером, что и сервер PHP). Существует версия PHP, которую вы можете использовать для открытия браузера и симуляции кликов и других взаимодействий со страницей.

http://seleniumhq.org/projects/remote-control/

Если у вас нет доступа к серверу с графическим интерфейсом, вам нужно будет выполнить серверный JavaScript с чем-то вроде Rhino или NodeJS.

0 голосов
/ 08 января 2012

вам нужно «отобразить» список курсов из базы данных на страницу в виде массива JS, который соответствует индексу вашего отдела.обратите внимание, что массивы начинают считать с 0, поэтому значения вашего отдела также должны начинаться с 0. Этот фрагмент кода должен быть в начале вашего html.

var courses = [
    ["course1-1","course1-2","course1-3","course1-4","course1-5"],
    ["course2-1","course2-2","course2-3","course2-4","course2-5"],
    ["course3-1","course3-2","course3-3","course3-4","course3-5"]
];

, затем, с помощью javascript, добавить прослушиватель событий дляваш <select>.скажем, у вас есть этот HTML

<select id="departments">
    <option value="0">dept1</option>
    <option value="1">dept2</option>
    <option value="2">dept3</option>
</select>

<select id="courses"></select>

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

$(document).ready(function(){


function setCourses() {
    var departmentValue = $('#departments').val();
    var courseOptions = "";
    for (i = 0; i < courses.length; i++) {
        courseOptions += "<option value=" + i + ">" +courses[departmentValue][i] + "</option>";
    }
    $("#courses").html(courseOptions);
}

$('#departments').change(function() {
    setCourses();
});

setCourses();

});

Вот скрипка: http://jsfiddle.net/z5GTX/1/

...