Forms 如何删除需要用户进行字段验证的表单?

Forms 如何删除需要用户进行字段验证的表单?,forms,vba,excel,web-scraping,Forms,Vba,Excel,Web Scraping,我正试图从这个网站上削价: 我可以很容易地输入表单数据,我可以激活“获取报价”按钮并单击它 我似乎无法使用web刮板(我只是在VBA中完成)获取要提交的表单数据。当我使用刮刀输入文本时,该按钮保持灰色,甚至会发出。单击按钮上的调用只会在表单上显示错误,告诉您不要将字段留空。显然,它只在你使用输入设备时识别数据 当我手动输入某个必填字段时,pickupLocation,其代码如下(因此按钮起作用,可以提交表单): 当我使用刮刀自动输入数据时,标记和属性如下所示: <input

我正试图从这个网站上削价:

我可以很容易地输入表单数据,我可以激活“获取报价”按钮并单击它

我似乎无法使用web刮板(我只是在VBA中完成)获取要提交的表单数据。当我使用刮刀输入文本时,该按钮保持灰色,甚至会发出
。单击按钮上的
调用只会在表单上显示错误,告诉您不要将字段留空。显然,它只在你使用输入设备时识别数据

当我手动输入某个必填字段时,
pickupLocation
,其代码如下(因此按钮起作用,可以提交表单):


当我使用刮刀自动输入数据时,标记和属性如下所示:

<input 
    type="text"
    id="pickUpLocation"
    name="pickUpLocation" 
    class="penskeValidateField penskeGoogleTypeAhead penskeInlineError ng-pristine ng-isolate-scope ng-invalid ng-invalid-required placeholder ng-touched"  
    aria-invalid="true" 
    aria-required="true"  
    country="rentalEntryCtrl.formItems.country"
    penske-validate-field="pickuplocation"
    required=""  
    autocomplete="off"  
    data-penske-placeholder="rentalEntryCtrl.activePlaceHolders.pickUpLocation"
    ng-model="rentalEntryCtrl.formItems.pickupLocationSearchCriteria.address" 
    autocompelete="off">

因此,我当然尝试使用
setAttribute()
将第一个代码块中的字段复制到第二个代码块中,但即使我可以更改属性,我仍然无法使表单正确提交

我看过其他人,他们处理过一些类似于自动更正的事情;他们的解决方案涉及查看标题和响应,并仅使用直接的XHR循环自动完成查询,但我正在抓取的定价信息是在提交了几页表单之后出现的,因此这里不允许这样做


我想我被困住了;关于如何填充表单并单击按钮/通过我的刮板提交,您有什么想法吗?

您能分享该网站吗?我注意到的一件事是,
aria invalid
属性使用自动化从false变为true。你可以试着切换这个值,看看会发生什么。该死,我的意思是包括网站。编辑。因此,我确实更改了所有属性以匹配已验证表单中的属性,但它仍然显示相同的错误消息。因此,我得到了部分工作。事实证明,您需要像这样调用更改事件:
ie.document.parentWindow.ExecScript($(“#puDateOneWay”).change()”
,用于表单中的每个条目(每个ID)。这样做会使“提交”按钮“未激活”,但它不允许我单击它。我试着提交表单并点击按钮,但没有任何效果。我认为您需要在页面上调用event/javascript函数,只是不确定是哪一个。@RyanWildry非常有用;非常感谢。您想在哪里找到这些脚本?它们正在使用jQuery。您可以在这里开始使用jQuery:您可以共享该网站吗?我注意到的一件事是,
aria invalid
属性使用自动化从false变为true。你可以试着切换这个值,看看会发生什么。该死,我的意思是包括网站。编辑。因此,我确实更改了所有属性以匹配已验证表单中的属性,但它仍然显示相同的错误消息。因此,我得到了部分工作。事实证明,您需要像这样调用更改事件:
ie.document.parentWindow.ExecScript($(“#puDateOneWay”).change()”
,用于表单中的每个条目(每个ID)。这样做会使“提交”按钮“未激活”,但它不允许我单击它。我试着提交表单并点击按钮,但没有任何效果。我认为您需要在页面上调用event/javascript函数,只是不确定是哪一个。@RyanWildry非常有用;非常感谢。您想在哪里找到这些脚本?它们正在使用jQuery。您可以在此处开始使用jQuery:
<input 
    type="text"
    id="pickUpLocation"
    name="pickUpLocation" 
    class="penskeValidateField penskeGoogleTypeAhead penskeInlineError ng-pristine ng-isolate-scope ng-invalid ng-invalid-required placeholder ng-touched"  
    aria-invalid="true" 
    aria-required="true"  
    country="rentalEntryCtrl.formItems.country"
    penske-validate-field="pickuplocation"
    required=""  
    autocomplete="off"  
    data-penske-placeholder="rentalEntryCtrl.activePlaceHolders.pickUpLocation"
    ng-model="rentalEntryCtrl.formItems.pickupLocationSearchCriteria.address" 
    autocompelete="off">