如何在使用c#webbrowser从下拉列表中自动选择值后更新网页

时间:2014-11-14 15:08:30

标签: c# html

我一直在尝试使用c#中的webbrowser进行一些网页自动化。通常,当我以编程方式单击页面的某个元素时,页面会自动更新以响应给定的单击。但是,我遇到了一个下拉框,它没有更新网页以响应从此框中选择的值。我在此框中选择值的代码是:

foreach(HtmlElement elem in webBrowser1.Document.GetElementsByTagName("select"))
        {
            if (elem.OuterHtml.Contains("areaPanel"))
            {
                elem.SetAttribute("selectedIndex", "0");
            }
        }

当我查看我的webbrowser时,此代码会在下拉框中选择正确的值。但通常情况下,当您在Chrome等普通浏览器中点击此选项时,该页面会根据所选值进行更新。当我使用elem.InvokeMember("Click")以编程方式执行此操作时,它不会像普通按钮那样响应,并且页面不会更新。我试图在网上搜索这个问题的解决方案,但我已经用尽了提议结果的页面列表,我不确定这些页面上提出的问题是否实际上解决了我在这里提出的问题。在搜索过程中,我找到了许多使用elem.RaiseEvent("onClick")的解决方案。但这似乎也不起作用。 webBrowser1.Update()也一样。

所以我的问题是:如果我能够选择下拉框的正确值,为什么即使在调用元素点击后页面也不会根据所选值自动更新,我该如何解决这个问题在c#中使用webbrowser的问题?

1 个答案:

答案 0 :(得分:0)

我本来希望将我的陈述添加为评论,但我没有足够的分数,所以这里就是。

您正在连接的元素可能使用javascript,webbrowser不会自动处理。使用webbrowser,您可以invoke the script。我个人更喜欢使用selenium来处理webbrowser自动化,以使事物尽可能接近标准浏览器。