Управление веб-браузером с помощью Excel VBA

Мне было поручено автоматизировать веб-задачу (для веб-сайта HTTPS). Пользователи в настоящее время заполняют лист Excel данными, теперь они хотят автоматизировать Excel таким образом, чтобы он напрямую управлял браузером и заполнял данные.

Я нашел версию iMacros Scripting как возможное решение для этого, я хотел знать, есть ли какие-либо другие подобные инструменты, которые можно использовать для управления браузером и заполнения данных.

Я также просмотрел клиентский драйвер Selenium, но я не уверен, как его использовать в Excel VBA.

Любая помощь будет оценена по достоинству.

Спасибо,


person Darshan Bhatia    schedule 20.09.2011    source источник
comment
Существует множество примеров, если вы погуглите, чтобы VBA автоматизировал IE (также множество примеров VB6, которые должны почти не измениться для VBA). Насколько вы знакомы с веб-программированием? Это действительно самое большое препятствие для выполнения такого рода задач: легко получить ссылку на HTML-документ, но найти и управлять объектами в нем сложнее.   -  person Tim Williams    schedule 20.09.2011
comment
на самом деле я не очень знаком с этим. Я думаю, что потребуется некоторое время, чтобы понять, как с ним работать. Любые предложения или инструменты, которые могут помочь в работе?   -  person Darshan Bhatia    schedule 21.09.2011
comment
Если мне нужно это сделать, я обычно использую VBA, но только потому, что это то, с чем я знаком. Существует множество других языков и фреймворков, и Google укажет вам множество примеров. Легче давать советы по конкретным проблемам, поэтому вам следует просто попробовать несколько простых примеров и вернуться сюда, если у вас возникнут вопросы о следующих шагах.   -  person Tim Williams    schedule 21.09.2011
comment
@Darshan Bhatia: Если вы можете поделиться ссылкой, я могу опубликовать образец. Вы можете писать в элементы управления, такие как текстовые поля/поля со списком и т. д., в веб-браузере после того, как вы обратитесь к ним по их идентификаторам элементов.   -  person Siddharth Rout    schedule 07.03.2012
comment
@Siddharth: веб-сайт является внутренним, поэтому я не смогу опубликовать ссылку.   -  person Darshan Bhatia    schedule 21.04.2012


Ответы (3)


Вы можете использовать Selenium из редактора Visual Basic, установив предоставленные здесь инструменты:

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

Существует плагин Selenium IDE для автоматической записи сценария в VBA и установочный пакет для запуска команды Selenium в редакторе Visual Basic.

Следующий пример запускает 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
person florentbr    schedule 06.03.2012

Этот образец открытого сайта 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

[]'s

person Bruno Leite    schedule 21.09.2011

Я использую этот код для чтения данных из excel и передачи его в селен для выполнения такой задачи, как «щелкнуть, выбрать, закрыть и т. д.», а также вы можете записать данные в excel.

Это на питоне, я не знаю 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")
person Sirga    schedule 10.10.2011