Ссылаясь на элемент ввода без идентификатора - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь использовать окно поиска на веб-сайте, чтобы найти клиента. Я могу ввести информацию в Inte rnet Explorer с кодом в разделе «Вход на веб-сайт», но когда я пытаюсь найти клиента, все объекты, которые я пытаюсь найти, всегда равны нулю.

Код VBA

Sub main()

' IE object to pass to all functions
Dim IE As Object
' Create InternetExplorer Object
Set IE = CreateObject("InternetExplorer.Application")

' URL for website login
Dim URL As String
URL = "https://www.website.com"

' Search bar object (for homepage)
Dim searchBar As Object

IE.Visible = True
IE.navigate URL


' Load webpage completely
Do Until Not IE.busy And IE.readystate = 4
    DoEvents
Loop

' Log on to website
IE.document.getElementByID("UserName").Value = "myUsername"
IE.document.getElementByID("Password").Value = "myPassword"
' Time delay ensures entry of username and password
Application.Wait (Now + TimeValue("00:00:02"))
IE.document.getElementByID("btnLogin").Click

' Load webpage completely
Application.Wait (Now + TimeValue("00:00:02"))
Do Until Not IE.busy And IE.readystate = 4
    DoEvents
Loop

' Search for client by ID on "Home" tab
' This doesn't work
IE.document.all("form1").Name("Searchfor").Value = "clientID"
IE.document.all("form1").Name("search").Click
' This doesn't work
IE.document.getElementsByName("Searchfor")(0).Value = "clientID"
IE.document.getElementsByName("search")(0).Click

End Sub

HTML Код (я пытался указать здесь пробелы, чтобы сделать его более читабельным, но я не знаю HTML, поэтому он может быть неправильно разделен )

<form name="form1" id="form1" action="/common/my_cw.asp" method="post">
<table width="255" border="0" cellspacing="0" cellpadding="2"><tbody>
<tr><td nowrap="">

<input name="Searchfor" onclick="if (this.value == 'NAME / ID') this.value=''" 
onblur="if (this.value == '') 
this.value='NAME / ID'" type="text" size="20" value="NAME / ID">&nbsp;&nbsp;

<input name="search" type="submit" value="Search"></td></tr>

<tr><td>
<input name="searchtype" type="radio" checked="" value="C">Client&nbsp;&nbsp;
<input name="searchtype" type="radio" value="E">Employee</td></tr>
</tbody>
</table>
</form>

Я также попытался getElementsByTag ("input") и использовать для каждого l oop безуспешно.

Пожалуйста, дайте мне знать, если потребуется дополнительный код HTML.

...