德尔福 - 自动化网站活动

时间:2017-02-13 14:40:36

标签: delphi

我正在尝试自动从网站下载报告(使用WebBrowser)。

我过去已成功完成报告,但现在发现自己必须从下拉列表中选择一个实体,以便为该实体生成新的报告表。我可以更改列表的索引,但不会生成我需要的报告表。

我使用Chrome上的“检查”功能来调试代码并查看表格的生成位置,但我对JavaScript的理解大约是3种不存在的阴影。

看来,当我点击该选项时,它会触发一个“onChange”事件,当我只选择选项时这是不会发生的(有意义)。所以,我试图手动触发这个onChange事件,但我承认这有点过头了。看起来我需要对JavaScript进行更多阅读,可能还需要阅读Delphi中的WebBrowser库。

我觉得我在Delphi,HTML和JavaScript之间的关系中缺少一个关键概念。我甚至不确定我是否可以通过Delphi发起事件(我需要找到一种模拟事件的方法,以便Listener将获取entityChanged事件)。我正在这里的心理圈试图绕过这个,我希望我错过了一些非常简单和基本的东西。

我的代码(打破了Element.FireEvent,再次通过调试确定的值):

procedure TForm3.runReport;
var
  Document : IHTMLDocument2;
  Element : IHTMLElement3;
begin
  try
    Document := Form3.WebBrowser1.Document as IHTMLDocument2;
    Element := Document.forms.item('l4iHkfgk6Nk%3D_store_11157_6%2F18%2F2014%2012%3A00%3A00%20AM',NULL) as IHTMLElement3;
    Element.FireEvent('entityChanged','Txxxxxxxxxxx (11157),l4iHkfgk6Nk=_store_11157_6/18/2014 12:00:00 AM,February 10 2017,entity');
  except
    rptSt := 1;
  end;
end;

以下是我发现的有关选择的事件监听器的信息:

image

这是调试事件时调用的函数:

image

如果这里含糊不清,我会事先道歉;我试图尽可能清楚。

0 个答案:

没有答案