Мой код VBA не работает, потому что я не могу найти свой идентификатор элемента. не будет работать и через имя класса. Я наберу sh, чтобы заполнить текстовое поле и нажать «Отправить» - PullRequest
0 голосов
/ 11 января 2020

Вот мой код VBA.

Он работает вплоть до того момента, когда я также продолжаю получать сообщения о том, что объект отключен от своего клиента. Я не хочу использовать sendkeys или Selenium, поскольку мои коллеги не смогут скопировать и запустить эту форму. Я sh, чтобы сделать его устойчивым.

Sub exceltoweb()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "https://fans-dub.amazon.com/"
IE.Visible = True
While IE.Busy
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Wend

delay 5
IE.document.all("submitterId").Value = ("fahac")
delay 2
IE.document.all("to").Value = ("ceezeala")
delay 3
IE.document.all("messageText").Value = ("10 errors")
delay 3
IE.document.all("/images/send-button.gif").Click

Application.StatusBar = "Form Submitted"
Set IE = Nothing
Application.ScreenUpdating = True
End Sub

Это HTML:

id="simpleSendMessageForm" method="post">
        <div id="outerDiv">
          <label>From:</label>
          <div class="formElement">
            <input name="submitterId" type="text" size="16" value="fahac" readonly />
          </div>
          <div class="break"></div>
          <label>
            <abbr title="A comma separated list of user ids who will receive this message">To:</abbr>
          </label>
          <div class="formElement">
            <input name="to" type="text" size="16" value="" />
          </div>
          <div class="break"></div>
          <label>
            <abbr title="A comma separated list of manager's user ids. The message will be sent to all people who report directly to one of these managers">Direct reports of:</abbr>
          </label>
          <div class="formElement">
            <input name="directReports" type="text" size="16" />
          </div>
          <div class="break"></div>
          <textarea rows="5" name="messageText"></textarea>
        </div>
        <div class="break"></div>
        <span class="right"> 
          <span id="ssmf-loading" class="ajaxloading"><img src="/images/ajax-loading.gif" alt="Loading..." /></span>
          <input type="image" src="/images/send-button.gif" />
        </span>
      </form>
    </div>
  </fieldset>
</div>

<!-- SEARCH -->
<!-- Search tab is excluded from EU pages for compliance with European data protection law -->


<div class="clear"></div>
<!-- MESSAGE LIST -->
<div class="qsection">
  <fieldset class="roundborder snx2">
    <legend id="messageListTitle" class="qsectionTitle">My Messages (Last 3 days)</legend>

      <div id="myMessages" class="qsectionBody">

Ящики, в которые я хочу ввести текст, не имеют идентификатора, просто имена. Я sh заполню 3 поля и нажму кнопку отправки, для которой отправка также не имеет идентификатора.

1 Ответ

0 голосов
/ 11 января 2020

Я думаю, что эти ссылки могут помочь вам:

http://automatetheweb.net/

http://automatetheweb.net/common-vba-methods-properties-web-automation/

Я убедитесь, что вы можете найти эти элементы, используя что-то вроде "IE .document.getElementByName" или "IE .document.getElementsByClassName"

измените эти значения с помощью .value и нажмите, используя метод click ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...