Заполнение форм в окне IE: нажмите кнопки и заполните текстовые поля - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь автоматизировать заполнение сайта IE, который повторяется и отнимает много времени.

Я написал код, который запускает IE, делает его видимым для пользователя, затемняет переменные, необходимые для заполнения.

Я нашел идентификатор и имя текстового поля, но не могу его заполнить.

Сайт является корпоративным сайтом, поэтому я не могу прикрепить ссылку.

Я могу прикрепить HTLM-код коробки, которую я пытаюсь заполнить, и кнопку, которую я пытаюсь щелкнуть.

ЯЩИК ТЕКСТА

<input name="ctl00$m$g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af$ctl00$grdLineItems$ctl02$txtDescription" 
 type="text"
 id="ctl00_m_g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af_ctl00_grdLineItems_ctl02_txtDescription"
 class="txtDescription" 
 onkeydown="return (event.keyCode!=13);" 
 style="width:680px;margin-top:2px;margin-bottom:2px" />

КНОПКА КНОПКИ

<input type="submit"
 name="ctl00$m$g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af$ctl00$ButtonAdd" 
 value="Add New Item"
 id="ctl00_m_g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af_ctl00_ButtonAdd"
 style="color:Black;background-color:White;font-size:Medium;font-weight:bold;width:150px;"/>

Я пробовал разные способы.Я попытался получить текстовое поле по имени, но я получаю сообщение об ошибке в команде документа.

МОЙ КОД

Sub Fill_in_eShipper()

Dim IE As Object Dim web_address As String
Dim number_of_elements As Integer 
Dim MydataSet As Variant 
Dim ObjCollection As Object 

Windows("eshipper filler.xlsm").Activate

Set IE = CreateObject("InternetExplorer.Application")

web_address = Range("c2") Range("D2").Formula = "=ROWS(A1:A161)-1"
number_of_elements = Range("d2") 

IE.navigate web_address 
IE.Visible = True

While IE.Busy DoEvents 'Wait till IE is done loading Wend

'Number of elements to populate 
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select 

Range("D1").Select
ActiveCell.FormulaR1C1 = "=ROWS(RC[-3]:R[160]C[-3])-1"   

IE.document.getelementsbyid("ctl00_m_g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af_ctl00_grdLineItems_ctl02_txtDescription").Value = Range("A2")
IE.document.All("ctl00$m$g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af$ctl00$ButtonAdd").Click

End Sub

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вам был предоставлен лучший метод селектора в существующем ответе, который заключается в использовании атрибутов идентификатора элемента.

Здесь приведен альтернативный синтаксис для той же вещи с использованием CSS на странице и селекторов идентификатора ("# ").

With ie.document
    .querySelector("#ctl00_m_g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af_ctl00_grdLineItems_ctl02_txtDescription").Value = Range("A2")
    .querySelector("#ctl00_m_g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af_ctl00_ButtonAdd").Click
End With
0 голосов
/ 10 октября 2018

Попробуйте - изменили Elements на Element и просто нажали .getElementById для клика.

IE.document.getElementById("ctl00_m_g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af_ctl00_grdLineItems_ctl02_txtDescription").Value = Range("A2")
IE.document.getElementById("ctl00_m_g_8fbfd2b6_3945_4bee_9a3b_20cfc2c846af_ctl00_ButtonAdd").Click
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...