我正在尝试使用 Python 自动化 Internet Explorer 与网站的交互。我正在使用 IEC 库来执行此操作。
该网站设置为在从下拉菜单中选择用户名时触发操作。html代码片段如下:
<select name="ClientID" tabIndex="1001" title="Select a client" class="client-select focus-default need-focus-object valid" style="width: auto;" onchange="localChangeClient()">
<option value="0">
<option value="2629049">
我能够以编程方式在下拉列表中设置用户名,但这不会触发“onchange”事件。我已经阅读了一些其他参考资料(下面的链接),这些参考资料表明我应该寻找 AJAX 请求并直接触发它,但我不知道该怎么做。
我收集到“onchange”触发了对名为 localChangeClient() 的函数的调用。如何直接从 Python IEC 调用/触发该函数?
从我链接的示例中,似乎会在该 localChangeClient 函数中发出 AJAX 请求 - 对吗?鉴于我看不到实际的函数详细信息,我怎么知道要调用的 AJAX 请求是什么?
编辑:以下描述了持续的努力/发展。我想我只需要知道如何直接调用 AJAX URL
所以我正在阅读更多关于 AJAX 请求的信息。我发现我可以使用 Firebug(控制台窗口)告诉我为 onchange 事件调用的特定 AJAX url。当我更改下拉菜单时,Firebug 告诉我以下内容(为清楚起见而截断):
POST https://example.com/MyBasket/MyBasket.asp?update=Update%20Basket&ClientID=2629049,0&SDT=417.577989&SCheck=49913&Checkout=&ClientID=2629049&ClientID=0&CurrentPageUrl=&FullPage=false&MyBasketPage=1&OnClickScheduleCheckboxName=&OverlayRequest=true&TransactionStarted=0&ajax=true&cbxRegQuantity=1&cbxRegQuantity=1&update=no
所以我认为我在正确的轨道上。但现在我不知道如何从 Python 触发该 url。如果我只是“ie.Navigate(url)”,它似乎不起作用。它把我带到一个非格式化的窗口,下拉菜单仍然没有被选中。
我查看了 Microsoft 支持站点 ( http://support.microsoft.com/kb/167658 ),其中谈到将请求数据编码为字节等,但我不清楚这是否适用于此。
如果有人可以提供有关如何“直接执行 AJAX 请求”的一些详细信息,我将不胜感激