Сценарий для чтения из Excel и взаимодействия с веб-сайтом и снова записать результат в Excel

Я пытаюсь автоматизировать некоторые повторяющиеся работы для получения результатов с сайта, эта ссылка Drugs.com , проверяет взаимодействие между двумя лекарствами.
Я должен взять текст двух лекарств из листа Excel и ввести их на веб-сайт, чтобы проверить взаимодействие между ними. Вот пример моего листа Excel:

column(A) Column(B) (A1)candesartan benazepril (A2)eprosartan captopril (A3)irbesartan enalapril 

Когда я нажимаю «Проверить на взаимодействие», результат следующей страницы должен быть извлечен и возвращен одно из деревенских взаимодействий:

-главный
-moderate
-незначительный

Затем он должен записать результат в столбец (c)

Я новичок в autoit, но я могу сделать некоторые скрипты, хотя и с большим количеством ошибок. Я буду признателен, если кто-то может исправить / помочь мне с ошибками в моем коде. Я также буду признателен, если кто-то может помочь мне с правильными ключевыми словами, чтобы я мог использовать Google для примеров и решений. Спасибо всем.

  #include <Excel.au3> #include <IE.au3> #include <File.au3> Local $sWorkbook = "C:\Users\Aligaaly\Desktop\autoit\test\drugs.xlsx" Local $oExcel = _Excel_Open() Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook) $oWorkbook = _Excel_BookAttach($sWorkbook) GLOBAL $oIE = _IECreate("https://www.drugs.com/drug_interactions.php") Local $oInputs = _IETagNameGetCollection($oIE, "input") For $oInput In $oInputs $text_form1 = _IEGetObjById($oIE, "livesearch-interaction") If StringLower($oInput.classname) == "input-button search-button" and _IEFormElementGetValue($oInput) Then ; it is an input Global $oInput_btn = $oInput EndIf Next WinActivate("[CLASS:XLMAIN]", "") For $i = 1 To 5 Global $sResulta = _Excel_RangeRead($oWorkbook, Default, 'A' & $i & ':A' & $i,1 ) For $y = 1 To 5 Global $sResultb = _Excel_RangeRead($oWorkbook, Default, 'B' & $y & ':B' & $y,1 ) WinActivate("[CLASS:IEFrame]", "") _IEFormElementSetValue($text_form1, $sResulta ) _IEAction ($oInput_btn, "click") sleep(5000) _IEFormElementSetValue($text_form1, $sResultb ) _IEAction ($oInput_btn, "click") sleep(5000) For $oInput In $oInputs If StringLower($oInput.value) == "check for interactions" Then Global $check_btn = $oInput EndIf Next _IEAction ($check_btn, "click") sleep(5000) $oButtonsa = _IETagnameGetCollection($oIE, "span") For $oButtonn in $oButtonsa If $oButtonn.classname == "status-category status-category-major" Then WinActivate("[CLASS:XLMAIN]", "") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "major","C" & $y) ElseIf $oButtonn.classname == "status-category status-category-moderate" Then WinActivate("[CLASS:XLMAIN]", "") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "moderate","C" & $y) ElseIf $oButtonn.classname == "status-category status-category-minor" Then WinActivate("[CLASS:XLMAIN]", "") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "minor","C" & $y) EndIf ExitLoop Next Next Next 

я обновил код с моими последними штрихами, я думаю, что этот код теперь завершил шаги, которые я записываю выше, но у меня есть ошибка, когда скрипт заканчивает первую итерацию введите описание изображения здесь

Проблема заключается в функции _IEFormElementSetValue.

Вероятно,

 $text_form1 = _IEGetObjById($oIE, "livesearch-interaction") 

не может найти какой-либо объект.

Для отладки вы можете вставить этот код до _IEFormElementSetValue:

 ConsoleWrite("isObject:" & isObj($text_form1) & @CRLF) 

Обновление: я нашел 3 проблемы. 1) Вы не вернулись на страницу поиска после окончания итерации, и входной объект не найден; 2) Вы должны получить объект Input и Button в начале каждой итерации; 3) Exitloop должен быть на каждом разделе If … esleif.

Попробуйте этот код:

 #include <Excel.au3> #include <IE.au3> #include <File.au3> Local $sWorkbook = "C:\Users\Aligaaly\Desktop\autoit\test\drugs.xlsx" Local $oExcel = _Excel_Open() Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook) $oWorkbook = _Excel_BookAttach($sWorkbook) GLOBAL $oIE = _IECreate("https://www.drugs.com/drug_interactions.php") Local $oInputs = _IETagNameGetCollection($oIE, "input") For $oInput In $oInputs $text_form1 = _IEGetObjById($oIE, "livesearch-interaction") If StringLower($oInput.classname) == "input-button search-button" and _IEFormElementGetValue($oInput) Then ; it is an input Global $oInput_btn = $oInput EndIf Next WinActivate("[CLASS:XLMAIN]", "") For $i = 1 To 5 Global $sResulta = _Excel_RangeRead($oWorkbook, Default, 'A' & $i & ':A' & $i,1 ) For $y = 1 To 5 Global $sResultb = _Excel_RangeRead($oWorkbook, Default, 'B' & $y & ':B' & $y,1 ) $oInputs = _IETagNameGetCollection($oIE, "input") For $oInput In $oInputs $text_form1 = _IEGetObjById($oIE, "livesearch-interaction") If StringLower($oInput.classname) == "input-button search-button" and _IEFormElementGetValue($oInput) Then ; it is an input $oInput_btn = $oInput EndIf Next WinActivate("[CLASS:IEFrame]", "") _IEFormElementSetValue($text_form1, $sResulta ) _IEAction ($oInput_btn, "click") sleep(5000) _IEFormElementSetValue($text_form1, $sResultb ) _IEAction ($oInput_btn, "click") sleep(5000) For $oInput In $oInputs If StringLower($oInput.value) == "check for interactions" Then Global $check_btn = $oInput EndIf Next _IEAction ($check_btn, "click") sleep(5000) $oButtonsa = _IETagnameGetCollection($oIE, "span") For $oButtonn in $oButtonsa If $oButtonn.classname == "status-category status-category-major" Then WinActivate("[CLASS:XLMAIN]", "") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "major","C" & $y) ExitLoop ElseIf $oButtonn.classname == "status-category status-category-moderate" Then WinActivate("[CLASS:XLMAIN]", "") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "moderate","C" & $y) ExitLoop ElseIf $oButtonn.classname == "status-category status-category-minor" Then WinActivate("[CLASS:XLMAIN]", "") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "minor","C" & $y) ExitLoop EndIf Next _IENavigate($oIE, "https://www.drugs.com/drug_interactions.php?action=new_list") Next Next 
  • Формула Excel, чтобы проверить, находится ли столбец в порядке возрастания
  • Как добавить два числа в excel, сохраняя ведущие нули?
  • Соответствующие значения в разных диапазонах
  • Выполнение общего состояния между двумя датами - EXCEL
  • Извлечение данных в соответствии с тремя разными столбцами
  • Подсчитайте количество ячеек, используемых в сумме
  • консолидировать значения в уникальной колонке
  • Макрос Excel для конкатенации
  • Выбор ячейки в Excel с использованием функции
  • Построение формулы Excel на основе ссылок на ячейки
  • Экран Excel открывает последнюю установленную версию
  • Давайте будем гением компьютера.