在C#Web浏览器中自动化谷歌地图(正确执行javascript时出现问题)

本文关键字:javascript 执行 问题 浏览器 C#Web 自动化 谷歌地图 | 更新日期: 2023-09-27 18:17:29

不使用API

我目前正在尝试使用 C# 中的 Web 浏览器加载谷歌地图并自动专注于我当前的位置,但是,由于某种原因我无法使其正常工作。这个想法很简单。加载谷歌地图,然后执行脚本以专注于我的当前位置:

mapBrowser.Document.InvokeScript("mylocation.onButtonClick");

或者,通过 HtmlElement 调用按钮单击:

HtmlElement myLocationButton = mapBrowser.Document.GetElementById("mylocation");
myLocationButton.InvokeMember("click");

但是,当然,这些方法实际上都无法正常工作,返回的坐标是不正确的,并且地图从未真正聚焦。关于如何正确解决此问题的任何想法?在实际加载文档之前,不会调用脚本:

private void mapBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if(mapBrowser.Url.ToString() == "https://www.google.com/maps/preview/")
        {
            try
            {
                //HtmlElement myLocationButton = mapBrowser.Document.GetElementById("mylocation");
                //myLocationButton.InvokeMember("click");
                mapBrowser.Document.InvokeScript("mylocation.onButtonClick");
                //mapBrowser.Document.InvokeScript("focus:mylocation.main");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error Invoking Script: " + ex.Message);
            }
        }
    }

所以我不相信这是我问题的原因。更令人沮丧的是,如果我手动单击按钮,自动对焦工作正常。

任何帮助不胜感激,谢谢!

(请注意,您可能需要进入IE并允许Google地图访问您的位置才能正确复制此问题(

在C#Web浏览器中自动化谷歌地图(正确执行javascript时出现问题)

我有几次遇到过WebBrowser控件使用太旧版本的IE的问题。您需要修改注册表以使其使用较新版本的 IE。我尝试使用IE 8和9进行"https://www.google.com/maps/preview/",它给了我一个错误,但它适用于IE 10。

请参阅:http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version