我正在尝试使用webbrowser从受密码保护的网页获取数据,该网页使用带有3个JQuery数据字段的div容器。第二个字段取决于第一个字段,第二个字段取决于第二个字段。我需要设置这3个组合框并点击提交以获取我想要抓取的数据。问题是,一旦第一个组合框发生变化,它就会调用一个填充第二个和第三个框的函数。我无法弄清楚如何调用这个函数......
这是第一个组合框的样子:
选择s [DCOM1] Selection1
我设法设置了第一个组合框,但是我遇到的最大问题是调用viewStep.onSChanged(),它应该填充第二个框,我无法使它工作。
onSChanged函数位于Jquery js中。文件
self.onsChanged = function(selectadj) {
self.viewBasicsUpdated = true;
log.debug('onsChanged');
if (self.s) {
self.adjEnabled = false;
self.adj = null;
self.auctionType = 'S';
controller.ds.getadjList(self.s.id, function(response) {
controller.applyUpdates(function() {
self.adjList = response.data;
// Add "Add adj" option (as first in array).
self.adjList.unshift({
id : ADD_adj_ID,
fullName : controller.locale.getMessage('app.label.add.adj')
});
self.adjEnabled = true;
self.standardEnabled = true;
self.vixEnabled = (StringUtils.trimWS(self.s.vixFlag) === 'Y') ? true : false;
self.offsiteEnabled = (StringUtils.trimWS(self.s.offsiteFlag) === 'Y') ? true : false;
self.titOnlyEnabled = (StringUtils.trimWS(self.s.titOnlyFlag) === 'Y') ? true : false;
self.salType = self.s.salType;
self.titProcurementFlag = (StringUtils.trimWS(self.s.titProcurmentFlag) === 'Y') ? true : false;
//Selects the adj when a new adj is added.
if(selectadj){
angular.forEach(self.adjList, function(object, index) {
log.debug("object.id++"+object.id);
if(object.id===self.newadjId){
self.adj=object;
log.debug("self.newadjId++"+object.id);
}
});
}
});
});
}else{
controller.applyUpdates(function() {
self.adj = null;
self.adjEnabled = false;
self.auctionType = 'S';
self.standardEnabled = false;
self.vixEnabled = false;
self.offsiteEnabled = false;
self.titOnlyEnabled = false;
self.salType = null;
self.titProcurementFlag = false;
});`
}
};
我试图在许多不同的选项中调用该函数,包括invokescript,发布一个与我在Fiddler看到的相同的post请求(我猜它因为cookie不同而失败)但是一切都失败了。有没有办法执行这个功能?
答案 0 :(得分:0)
使用Javascript在输入控件上设置值时,DOM事件可能不会触发,具体取决于值的设置方式。
而不是尝试执行网页通常会触发的相同功能,在这种情况下self.onsChanged
,在您更新的控件上触发事件。
$("#selectBox1").val("Value A");
$("#selectBox1").change();