【问题标题】:Controlling a web browser using Excel VBA使用 Excel VBA 控制 Web 浏览器
【发布时间】:2011-11-21 07:27:20
【问题描述】:

我被分配了自动化基于 Web 的任务的任务(对于 HTTPS 网站)。用户目前正在用数据填写 Excel 表,他们现在希望以直接控制浏览器并填写数据的方式自动化 Excel。

我发现 iMacros Scripting 版本是一个可能的解决方案,我想知道是否有任何其他类似的工具可以用于控制浏览器和填充数据。

我还查看了 Selenium 客户端驱动程序,但我不确定如何在 Excel VBA 中使用它。

任何帮助将不胜感激。

谢谢,

【问题讨论】:

  • 如果你在谷歌上搜索“VBA 自动化 IE”,就会有很多示例(还有很多 VB6 示例,它们应该几乎未更改地映射到 VBA)。你对网络编程有多熟悉?这确实是完成此类任务的最大障碍:获得对 HTML 文档的引用很容易,但在其中定位和操作对象则比较棘手。
  • 其实我不是很熟悉。我认为这需要相当多的时间来弄清楚如何使用它。有什么对工作有帮助的建议或工具吗?
  • 如果我需要这样做,我倾向于使用 VBA,但这只是因为那是我所熟悉的。还有很多其他语言和框架,Google 会为您指出大量示例。就特定问题提供建议更容易,因此您应该尝试一些简单的示例,如果您对后续步骤有疑问,请返回此处查看。
  • @Darshan Bhatia:如果您可以分享链接,那么我可以发布示例。在通过元素 ID 引用它们之后,您可以在 Web 浏览器中写入文本框/组合框等控件。
  • @Siddharth:该网站是内部网站,因此我无法发布链接。

标签: vba excel selenium-rc webautomation


【解决方案1】:

您可以通过安装此处提供的工具从 Visual Basic 编辑器中使用 Selenium:

http://code.google.com/p/selenium-vba/

有一个 Selenium IDE 插件可以在 VBA 中自动录制脚本,还有一个安装包可以在 Visual Basic 编辑器中运行 Selenium 命令。

以下示例启动 Firefox,在第 1 列打开链接,将标题与第 2 列进行比较,并将结果传递到第 3 列。 使用的数据位于工作表中,位于名为“MyValues”的范围内。

Public Sub TC002()
   Dim selenium As New SeleniumWrapper.WebDriver, r As Range
   selenium.Start "firefox", "http://www.google.com" 
   For Each r In Range("MyValues").Rows
     selenium.open r.Cells(, 1)
     selenium.waitForNotTitle ""
     r.Cells(, 3) = selenium.verifyTitle(r.Cells(, 2))
   Next
   selenium.stop
End Sub

【讨论】:

    【解决方案2】:

    此示例打开 stackoverflow 站点并显示 IE

    Sub OpenIE()
    'officevb.com
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    
    ie.Navigate "http://www.stackowerflow.com"
    
     'wait load
     While ie.ReadyState <> READYSTATE_COMPLETE
      DoEvents
     Wend
    
    ie.Visible = True
    
    End Sub
    

    []的

    【讨论】:

      【解决方案3】:

      我使用此代码从 excel 读取数据并将其传递给 selenium 以执行“单击、选择、关闭等”之类的任务,您也可以将数据写入 excel。

      这是在 python 中,我不知道 VB,如果你希望我也可以在 perl 中给出相同的代码,我知道 perl。

      我希望这可能会有所帮助。

      from xlwt import Workbook
      
      import xlrd
      
      testconfigfilename="testconfig.xls"
      
          if (len(sys.argv) > 1):
      
              testconfigfilename=sys.argv[1]       
      
          wb = xlrd.open_workbook(testconfigfilename);
      
          wb.sheet_names();
      
          sh = wb.sheet_by_index(0); 'Sheet 0 - selenium server configuration'
      
      
      
          seleniumHost = sh.cell(1,0).value
      
          seleniumPort = int(sh.cell(1,1).value)
      
          testBaseURL = sh.cell(1,2).value
      
          browser = sh.cell(1,3).value
      
          timeout = int(sh.cell(1,4).value)
      
          path = sh.cell(1,5).value
      
      outputwb = Workbook()
      
          outputsheet = outputwb.add_sheet("result",cell_overwrite_ok=True) #get the first sheet in the result xls 
      
      outputsheet.write(RowNumber,colNumber,"data")
      

      【讨论】:

        猜你喜欢
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-04
        • 2013-08-06
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        相关资源
        最近更新 更多