【问题标题】:Click Gmail Refresh button点击 Gmail 刷新按钮
【发布时间】:2011-03-28 15:56:15
【问题描述】:

我正在编写一个带有浏览器控件的简单个人应用程序,我希望它自动“刷新”gmail 以比默认情况下更频繁地检查它。有猴子脚本可以做到这一点,但我正在尝试将我的个人风格添加到其中。

不管怎样,我环顾四周,发现了一切,除了我可以使用浏览器控件在 csharp 中做什么。

我发现了这个:

// Link the ID from the web form to the Button var
theButton = webBrowser_Gmail.Document.GetElementById("Refresh");

// Now do the actual click.
theButton.InvokeMember("click");

但它在 'theButton' 中返回 null,因此它不会调用任何东西。

大家有什么建议吗?

【问题讨论】:

  • 很遗憾,gmail 的刷新按钮没有典型的“Id”属性。按钮的标记如下所示:
    Refresh
    我不确定如何定位这个元素。
  • 想知道这样做是否是为了防止此类事情发生?如果是这样的话,那真的会影响我的生活......

标签: c# .net winforms gmail webbrowser-control


【解决方案1】:

自从我使用 JavaScript 以来已经有一段时间了,但鉴于其他答案和 cmets 没有与元素关联的真实 ID,您能否执行以下操作:

  1. 搜索所有具有 Role == 'Button' 和 InnerHtml == 'Refresh' 属性的 Div。
  2. 找到正确的 InnerHtml 后,获取元素。
  3. 在找到的元素上调用点击。

再说一次,这可能会冒烟,但我想我会把它扔掉。

edit:刚刚意识到您正在使用 C# 和浏览器控件执行此操作;但是,这个概念还是一样的。

【讨论】:

  • 浏览器控件是否提供了一个我可以循环遍历的 div 集合,还是我需要解析 html?
  • 你打赌。它被称为 DOM,并且有充足的文档。有 jQuery 允许智能(你猜对了:)查询,如果是 xhtml,我认为你可以使用 xpath 查询
【解决方案2】:

在这一点上我能给你的最好建议涉及一个现有的 API,它用于基于 .NET 网络浏览器的自动化:

http://watin.org/

由于带有所需按钮的 div 标记实际上似乎只用类名来标识自己,因此您可以使用最新版本的 watin 中包含的 Find.BySelector(“”) 代码。

【讨论】:

    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多