首先贴出一下选择框的网页元素代码<div class="select"><select id="cond_PSPT_TYPE" name="cond_PSPT_TYPE" disabled="disabled" class="e_select" desc="选择框" type="text"> <option value="">-----默认选择-----</option> <option value="0">选项0</option> <option value="1">选项0</option> </select></div> </div></div> 先通过IHTMLSelectElement接口获得所选item的value,程序中是strValue;再通过IHTMLOptionElement接口遍历判断value同strValue的下拉选项元素的文本信息。 CString GetText() { CString strValue; CString strText; HRESULT hr; IDispatch pDisp; pDisp = m_webBrowserget_Document(); // 获取webbrowser控件文档接口 IHTMLDocument2 pDoc; hr = pDisp->QueryInterface( IID_IHTMLDocument2, (void)&pDoc ); // 获取 *** 作界面的文档接口 IHTMLElementCollection pColl = NULL; hr = pDoc->get_all( &pColl ); // 获取网页元素集合 // ------------------------获取选择框的所选item的value----------------------------------------- VARIANT index; VARIANT varID; V_VT(&index) = VT_I4; V_I4(&index) = 0; CString IDSelect = "cond_PSPT_TYPE"; // IDSelect是选择框的网页元素ID varID = StringToVariant(IDSelect); hr = pColl->item(varID, index, &pDisp); // 获得选择框位置 if ( (hr == S_OK) && (pDisp != NULL) ) { IHTMLSelectElement pSelect; // 获得选择框元素接口 hr = pDisp->QueryInterface(IID_IHTMLSelectElement,(void )&pSelect ); if ( (hr == S_OK) && (pSelect != NULL) ) { BSTR bstr = SysAllocString(L""); pSelect->get_value(&bstr); // 获取选择框所选item的value strValue = bstr; pSelect->Release(); } pDisp->Release(); } // ------------------------获取选择框的所选item的文本信息-------------------------------------- long cntElement; hr = pColl->get_length(&cntElement); // 获取网页元素个数 for(int i = 0; i < cntElement; i++) { IDispatch pDisp2; V_I4(&index) = i; hr = pColl->item( index,index, &pDisp2 ); // 获取元素位置 if ( (hr == S_OK) && (pDisp2 != NULL) ) { IHTMLOptionElement pOptElem; // 获取下拉选项元素接口 hr = pDisp2->QueryInterface(IID_IHTMLOptionElement,(void )&pOptElem); if ( (hr == S_OK) && (pOptElem != NULL) ) { BSTR bstr = SysAllocString(L""); pOptElem->get_value(&bstr); // 获取下拉选项元素的value CString strTemp = ""; strTemp = bstr; if(strTemp == strValue) { pOptElem->get_text(&bstr); // 获取下拉选项元素的文本信息 strText = bstr; i = cntElement; } pOptElem->Release(); } pDisp2->Release(); } } pDoc->Release(); pColl->Release(); return strText; }
表单提交JS动态生成的数据,服务器靠webclient去抓是抓不到的
我这样子告诉你吧要是webbrowser可以抓取保存在客户端的JS变量,那么获取页面所有元素的值肯定是没问题的了,那么我可以去抓取银行登录口的页面了
至于你说别人做到,你估计误会我的意思了表单提交不代表页面的刷新,现在用AJAX完全可以异步提交的,我也可以写个方法,每次调用的时候就把方法的返回值发送到服务器,这个是很轻而易举的事情
以上就是关于怎么用VBS获取已经打开网页元素的文本信息全部的内容,包括:怎么用VBS获取已经打开网页元素的文本信息、c#如何获得html中网页脚本js方法返回的数据,这个数据已经显示在浏览器中了,就是不知道如何编程获取。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)