[英]Why does web browser drop down not update the price?
我有一個程序,可以自動選擇一個下拉列表中的每個值並復制它們各自的價格。
我的問題是,即使我的程序選擇了一個特定的值,該特定的值也未顯示其自身的特定價格。
這是我正在使用的代碼:
foreach (HtmlElement htmlElement in this.webBrowser2.Document.GetElementsByTagName("select")) {
if (htmlElement.OuterHtml.Contains("msku-sel-1")) {
htmlElement.Focus();
// htmlElement.RaiseEvent("onClick");
htmlElement.InvokeMember("Click");
htmlElement.SetAttribute("value", "3");
//webBrowser2.Document.InvokeScript("(a)");
}
}
這是我正在其中應用的網站的鏈接: http : //www.ebay.com/itm/Keurig-Tullys-French-Roast-Decaf-18-或 180-K-Cups- / 111042016413 ?
在該網頁中,有一個下拉列表,代表“ Box Size”。
因此,根據上面的代碼,它可以突出顯示並選擇Box Size,然后選擇一個值為48的值。
它還應該更新並顯示價格,但沒有。
現在,如果您手動單擊下拉列表,然后選擇48,價格將變為“ US $ 39.47”
但是我在上面使用的代碼可以選擇值,但是價格不會更改為“ US $ 39.47”
當我使用Opera Internet Browser深入挖掘網站的源代碼時,我注意到它具有一個事件偵聽器,其中包含以下代碼:
function(a){return typeof f!="undefined"&& (!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b}
這是我需要幫助的部分。 如果您可以重新創建我正在使用的代碼,您會注意到它會成功選擇正確的值,但是它似乎並未更新價格。 即使已經選擇了價格,如何更新價格?
采用
htmlElement.RaiseEvent("onChange");
並將其放置在選擇值之后。
該頁面已加載了jQuery,因此您可以使用以下代碼來縮短代碼(並解決您的問題):
$("#msku-sel-1").val(3);
$("#msku-sel-1").change();
希望能有所幫助。
我找到答案
我使用的是Internet Explorer版本9。我將其降級為Internet Explorer版本7,因此,當我運行程序時,它選擇了值和代表該特定值的價格成功顯示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.