正在尝试使用VBA与DOM元素输入交互



我的问题是尝试使用VBA与网站交互。

我已经通过简单地说ie.document.getElementById(strId).value = my_value以及当这些元素存在于表单中时来填充输入框

但就我的一生而言,我无法让它发挥作用。我会尽可能多地发布HTML。

HTML:

<input title="Order Number" class="mtn-srch-text text-field req" id="orderNum" type="text" maxLength="10" data-sticky-placeholder="Order Number">

试图获取orderNum字段并将其填充的VBA。

objBrowser.document.getElementById("orderNum").value = "1234"

每次都会出现Object Required错误,所以我认为它没有找到正确的位置,因为元素肯定存在,但我错误地指向了它。由于我在这个页面的HTML中没有看到任何表单标记,我不知道如何向下搜索以填充这个输入框。任何建议都会很棒!

添加更多的代码,必须删除一些URLS和用户名/密码,但正如你所看到的,在我们进入iFrame部分之前,导航非常简单。我现在看到每个iFrame都有一个不同的SRC,这可能就是的原因

.contentDocument.getelementbyId("textbox").value = "test" 

不起作用。我们关注的是虚线下的一切,正如你所看到的,这只是我在尝试不同的事情。

Dim strPosUrl As String, strUsername As String, strPassword As String, _
strStoreDomId As String, strStore As String, _
strBtnStoreUpdateDomId As String, strOrder As String, _
strLoadingSpinner As String, strCssAttributeSpinner As String, _
strCssTextSpinner As String
Dim objBrowser As Object 'SHDocVw.InternetExplorer
Dim blnSsoLogin As Boolean
Dim intStoreColNum As Integer, intOrderColNum As Integer, _
intCreditCardColNum As Integer
'Dim doc As MSHTML.HTMLDocument
'these are test vars-----------------
strStore = "Data"
strOrder = "Data"
'----------------------------------
strLoadingSpinner = "spinnerUnique"
strCssAttributeSpinner = "style"
strCssTextSpinner = "display: none;"
strUsername = "example"
strPassword = "EXample"
strStoreDomId = "orderLocInputId"
strBtnStoreUpdateDomId = "orderLocValueUpdate"
strPosUrl = "https://example.jsp"
Set objBrowser = New InternetExplorerMedium
objBrowser.Visible = True
browserNavigate strPosUrl, objBrowser
browserWait objBrowser
blnSsoLogin = ssoLoginCheck(objBrowser)
Select Case blnSsoLogin
Case Is = True
ssoLoginMod strUsername, strPassword, objBrowser
browserWait objBrowser
Case Is = False
End Select
fillTextboxWithId objBrowser, strStoreDomId, strStore
clickButtonWithId objBrowser, strBtnStoreUpdateDomId
browserWait objBrowser
foundOrNot strLoadingSpinner, strCssAttributeSpinner, _
strCssTextSpinner, objBrowser

'-----------------------------------------------------
Dim IFrameText As Object
Set IFrameText = objBrowser.document.getElementById("frmHome")
IFrameText.HTML.getElementById("ordernum").Value = "1223"
Dim x As String
objBrowser.navigate "https://xxxxxxx.xxxxxxx.com" & x
x = objBrowser.LocationURL
x = "just messing with stuff"
Set IFrameText = objBrowser.document.getElementById("frmHome")
Dim elem As Object
For Each elem In IFrameText
If elem.innerText Like "*true*" Then
MsgBox (elem)
End If
Next

它在一个表中。

所以它真的很简单:

getelementbyid("yourTableId").getElementsByTagName("tr")(x row).getElementsByTagName("td")(x cell)

之后,对元素执行您想要的操作。

最新更新