2013-10-18 59 views
0

我正在嘗試使用Python自動化Internet Explorer與網站的交互。我正在使用IEC庫來執行此操作。Python如何調用AJAX URL(以觸發網站選擇菜單的onchange事件)

無論何時從下拉菜單中選擇用戶名,網站都會設置爲觸發操作。在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請求並直接觸發它,但我不知道如何執行此操作。

  1. Trigger Javascript event on remote website with Python
  2. on Change of dropdown list showld call the php function

我推測, '平變化' 觸發呼叫到被叫localChangeClient()的函數。我如何直接從Python IEC調用/觸發該函數?

從我鏈接的例子來看,似乎AJAX請求將在該localChangeClient函數內進行 - 是嗎?我怎麼知道AJAX請求調用的是什麼,因爲我看不到實際的功能細節?

編輯:下面描述繼續努力/發展。我想我只需要知道如何直接調用AJAX URL

所以我正在閱讀更多關於AJAX請求的內容。我發現我可以使用Firebug(控制檯窗口)告訴我爲onchange事件調用的特定AJAX url。螢火告訴我下面的(剪斷,爲清楚起見),當我改變了下拉菜單:

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觸發該網址。如果我只是「ie.Navigate(url)」,它似乎不起作用。它帶我到一個非格式化的窗口,下拉菜單仍未被選中。

我檢查了一個Microsoft支持網站(http://support.microsoft.com/kb/167658),該網站討論了將請求數據編碼爲字節等,但我不清楚這是否適用於此。

我真的很感激,如果有人可以提供有關如何「做直接的AJAX請求」

回答

1

使用Python的requests庫撥打電話給你發現URL的一些細節。您還需要在Firebug控制檯中查找POST請求的正文和任何自定義HTTP標頭,以便在您的腳本中複製它。

res = requests.post(<url>, data=<request-body>, headers=<headers>) 
相關問題