这是我正在处理的网址
http://www.bkstr.com/CategoryDisplay/10001-9604-10311-1?demoKey=d
这些是下拉值:
选择您的程序:全部(常量)
选择你的学期:2012年春季(常数))
按课程ID搜索或选择您的部门:包含值列表(我需要从我的程序逐个选择此值)
下一个下拉菜单“按课程ID搜索或选择您的课程”将根据我们在上一个下拉菜单中选择的内容显示。
这是我试图自动化的部分。
好吧,点击提交后我会收到网址
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§ionDisplayName=10182&demoKey=d&purpose=browsea
在这里,我可以看到所选的值作为查询参数传递但是这给我留下了一个问题:
我如何以编程方式(动态)循环部门&它的后续课程没有硬编码我的查询参数之前的值?有什么指导吗?
答案 0 :(得分:1)
使用Selenium RC,假设您可以访问带GUI的服务器(它不需要与执行PHP的服务器相同)。有一个PHP版本,您可以使用它打开浏览器并模拟点击和与页面的其他交互。
http://seleniumhq.org/projects/remote-control/
如果您无法访问带有GUI的服务器,则需要使用Rhino或NodeJS等服务器端JavaScript。
答案 1 :(得分:0)
您需要将数据库中的列表课程“回显”到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/