我有一个程序可以自动选择下拉列表中的每个值并复制每个价格。
我遇到的问题是,即使我的程序选择了一个特定的值 - 该特定值也没有显示其特定的价格。
这是我正在使用的代码:
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-or-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}
这是我需要帮助的部分。如果你可以请重新创建我正在使用的代码,你会发现它会成功选择正确的值,但它似乎没有更新价格。即使我已选择了值,如何更新价格?
答案 0 :(得分:0)
使用
htmlElement.RaiseEvent("onChange");
并在选择值后放置它。
答案 1 :(得分:0)
该页面中加载了jQuery,因此您可以使用以下命令缩短代码(并解决问题):
$("#msku-sel-1").val(3);
$("#msku-sel-1").change();
希望有所帮助。
答案 2 :(得分:0)
我找到了答案
我使用的是Internet Explorer版本9.我将其降级为Internet Explorer版本7,然后当我运行我的程序时,它选择了值,代表该特定值的价格成功显示