【问题标题】:Unable to fix VBA crawling error on webpage无法修复网页上的 VBA 抓取错误
【发布时间】:2018-07-07 04:14:02
【问题描述】:

网站:http://www.cookcountypropertyinfo.com/default.aspx。 我想自动化在“按密码”部分输入值的过程,然后提交“搜索”按钮。下面提到的代码填充到“BY PIN”部分,但它未通过验证标准并返回错误消息。但是,手动输入相同的值返回结果。我无法弄清楚我的代码中缺少什么。

Private Sub Command443_Click()
Dim PINArray() As String
PINArray() = Split(PINText, "-")


Set objie = CreateObject("InternetExplorer.Application")
WebSite = "http://www.cookcountypropertyinfo.com/default.aspx"
DoCmd.Hourglass True
With objie
.Visible = False
.navigate WebSite
Do While .Busy Or .ReadyState <> 4
DoEvents
Loop
.Visible = True
Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox1")
element.Item(0).Value = PINArray(0)
element.Item(0).fireevent "onkeyup"

Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox2")
element.Item(0).Value = PINArray(1)
element.Item(0).fireevent "onkeyup"

Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox3")
element.Item(0).Value = PINArray(2)
element.Item(0).fireevent "onkeyup"


Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox4")
element.Item(0).Value = PINArray(3)
element.Item(0).fireevent "onkeyup"


Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox5")
element.Item(0).Value = PINArray(4)
element.Item(0).fireevent "onkeyup"
element.Item(0).fireevent "onkeydown"

Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$btnSearch")
element.Item(0).Click

End Sub

【问题讨论】:

  • PINText的值是多少?
  • PINText 的值为“01-01-100-047-0000”

标签: javascript html ms-access vba web-crawler


【解决方案1】:

页面上的搜索按钮调用'ValidateSearch'功能; 验证搜索:

function ValidateSearch() {
    var searchToValidate = $('#searchToValidate').val();
    $('#__EVENTARGUMENT').val('btn' + searchToValidate);
    $('#invalidpinaddressmessage').hide();

    if (searchToValidate == "PIN") {
        if (typeof (Page_ClientValidate) == 'function') {
            Page_ClientValidate('pin');
        }
    }
    else if (searchToValidate == "Address") {
        if (typeof (Page_ClientValidate) == 'function') {
            Page_ClientValidate('address');
        }
    }
    else if (searchToValidate == "") {
        $('#invalidpinaddressmessage').show();
        return false;
    }

    if (Page_IsValid) {
        return true;
    }
    else {
        scrollToValidation(60);
        return false;
    }
}

$('#searchToValidate').val() 指的是下面提到的 HTML 隐藏标签

<input type="hidden" 
name="ctl00$ContentPlaceHolder1$PINAddressSearch$searchToValidate" 
id="searchToValidate" />

在我的 vba 代码中,我将输入标签“searchToValidate”的值插入“PIN”以绕过并提交搜索按钮。

.Document.getElementById("searchToValidate").Value = "PIN"
Set element =.Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$btnSearch")
element.Item(0).Click

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2019-12-17
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多