【求救啊】沒有form,沒有name,只有id和無數個tr和td,怎么找控件?


准備用BCB6 的CppWebBroswer搞頁面遍歷,現在卡在登錄這個事情上了。。
在網上找了好幾個實例,都是說用IHTMLInputElement這個方法,來遍歷查找控件name,id啥的,
關鍵是,我現在這邊的web上面,只有一個input輸入框和一個按鈕,還都沒有name,也沒有用form,
已有的示例試了下都不行,

貼一下網頁的源碼:
<body data-spy="scroll" data-target=".bs-docs-sidebar" style="background-color:#e7e7e7;" class="ember-application">
<div id="indexcontent" class="clearboth" align="center" style="height:612px;">
  <img id="guidebg" src="/res/bg.jpg" height="642px" style="right:0;bottom:0;position:absolute;top:0;left:0;z-index:-1;width:100%;min-width:1000px;">
  <div class="clearboth rounddiv" style="width:1000px;padding-top:42px;">
    <div align="center" class="clearboth width_100p">
      <div class="clearboth">
        <table style="width:626px;height:440px;margin-left:3px;" cellpadding="0" cellspacing="0" frame="void" rules="none">
          <tbody>
            <tr>
              <td style="text-align:center;width:100%;">
              <div id="logintable" align="center" style="color:#ffffff;margin-top:27px;margin-left:4px;">
                  <div id="ember273" class="ember-view">
                    <table id="ember311" class="ember-view">
                      <tbody><tr><td id="logininfo" style="height:40px;font-size:14px;color:#e0ecf7;text-align:left;padding-left:5px;"><script id="metamorph-4-start" type="text/x-placeholder"></script>請輸入登錄密碼<script id="metamorph-4-end" type="text/x-placeholder"></script></td></tr> 
                      <tr><td id="loginpassword" style="padding-left:2px;">
                        <div class="input_left">&nbsp;</div> 
                          <input autocomplete="off" type="password" class="input_text" id="userpassword" onkeydown="fncKeyStop(event);" onpaste="return false;" oncontextmenu="return false;" style="width:293px;color:#ffffff;"> 
                        <div class="input_right">&nbsp;</div> 
                      </td></tr>
                        <tr><td id="loginerror" style="height:20px;"><table id="loginerrortable" class="hide" style="display: table;"><tbody><tr><td><div class="ic-sign"></div></td><td style="padding-left:5px;color:#b7d4ec;font-size:12px;" id="errorCategory">密碼有誤,請重新輸入。</td></tr></tbody></table></td></tr> 
                        <tr><td style="height:80px;">
                        <div id="ember316" class="ember-view">
                          <button id="loginbtn" class="loginbutton" style="font-size:18px;color:white;" onclick="Atp.LoginController.postData();"><script id="metamorph-5-start" type="text/x-placeholder"></script>登錄<script id="metamorph-5-end" type="text/x-placeholder"></script></button> 
                        </div>
                        </td></tr>
                      </tbody></table>
                  </div>
                </div>
                </td>
              </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</div>
</body>

有沒有大神幫忙看下,怎么用下面這套東東實現自動填表登錄啊~
IDispatch     *spDispatch;
    IHTMLDocument2   *pDoc2;
    IHTMLElement   *pElement;
    IHTMLElementCollection     *pElementCol;
    IHTMLFormElement   *pFormElement;
    IHTMLInputElement   *pInputElement;

10 个解决方案

#1


它密碼輸入框是這樣的:

#2


<input autocomplete="off" type="password" class="input_text" id="userpassword" onkeydown="fncKeyStop(event);" onpaste="return false;" oncontextmenu="return false;" style="width:293px;color:#ffffff;"> 

#3


想模擬登陸嗎
有url嗎

#4


引用 3 樓 ksrsoft 的回復:
想模擬登陸嗎
有url嗎


有URL,是http://192.168.3.1/html/index.html
登錄以后的URL是 http://192.168.3.1/html/content.html

#5


url是內網,沒有外網的url嗎

#6


引用 5 樓 ksrsoft 的回復:
url是內網,沒有外網的url嗎


沒有外網可以打開的URL地址,要看顯示的話,可以把最上面的網頁源碼復制到txt,保存成html格式文件,本地用IE打開就可以了。

#7


明天解析試試

#8


是有ID的
分別是
userpassword
loginbtn

這個東西我感覺用delphi方便寫,所以是delphi語法
頭文件MSHTML

procedure TFrmLogin.Button1Click(Sender: TObject);
var
  doc2: IHTMLDocument2;
  doc3: IHTMLDocument3;
  ec: IHTMLElementCollection;
  elmt: IHTMLElement;
  i, j, k: Integer;
  str: string;
begin

  doc2 := Self.WebBrowser1.Document as IHTMLDocument2;
  doc3 := Self.WebBrowser1.Document as IHTMLDocument3;

  elmt := doc3.getElementById('userpassword');
  elmt.id;
  elmt._className;
  elmt.tagName;
  elmt.setAttribute('value', 'abcdef4564564564', 0);

  elmt := doc3.getElementById('loginbtn');
  elmt.click;

end;

procedure TFrmLogin.FormCreate(Sender: TObject);
begin
  Self.WebBrowser1.Navigate('E:\TestCode\DE8\ParseHTML\login.html');
end;

#9


參考這個
http://blog.csdn.net/baronyang/article/details/7485258
功能很強大

#10


引用 8 樓 ksrsoft 的回復:
是有ID的
分別是
userpassword
loginbtn

這個東西我感覺用delphi方便寫,所以是delphi語法
頭文件MSHTML

procedure TFrmLogin.Button1Click(Sender: TObject);
var
  doc2: IHTMLDocument2;
  doc3: IHTMLDocument3;
  ec: IHTMLElementCollection;
  elmt: IHTMLElement;
  i, j, k: Integer;
  str: string;
begin

  doc2 := Self.WebBrowser1.Document as IHTMLDocument2;
  doc3 := Self.WebBrowser1.Document as IHTMLDocument3;

  elmt := doc3.getElementById('userpassword');
  elmt.id;
  elmt._className;
  elmt.tagName;
  elmt.setAttribute('value', 'abcdef4564564564', 0);

  elmt := doc3.getElementById('loginbtn');
  elmt.click;

end;

procedure TFrmLogin.FormCreate(Sender: TObject);
begin
  Self.WebBrowser1.Navigate('E:\TestCode\DE8\ParseHTML\login.html');
end;


感謝大神!我試着改成 BCB,可是有些問題不會解,能不能幫忙指導下?

    IDispatch *spDispatch;
    IHTMLDocument2 *doc2 ;
    IHTMLDocument3 *doc3;
    IHTMLElementCollection *ec;
    IHTMLElement *elmt;
    int i,j,k;

    IDispatch *WebDocument=static_cast <IDispatch*> (cWeb->Document);
    doc2=static_cast <IHTMLDocument2*> (WebDocument);
    doc3=static_cast <IHTMLDocument3*> (WebDocument);

    WideString wPwdid = "userpassword";
    WideString wPwdAttr = "value";

    doc3->getElementById(wPwdid.c_bstr(),(IHTMLElement **)elmt);

    elmt->setAttribute(wPwdAttr.c_bstr(),/*這里需要tagVARIANT類型的值,不知道咋傳進去...*/,0);

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



Find the number of s in a without using id or name JQuery如何查找tr下面某個name的td內容 Django. How to display json file in html namevaluedate tags? How to access td from tr with id Jquery 這個錯在哪?">這個錯在哪? How to get id of tr after clicking its td's element? JavaScript, getting value of a td with id name 333 做一個超鏈接">如何用js語句給下面的 做一個超鏈接Hiding a with CSS如何在for循環TR與TD
 
粤ICP备14056181号  © 2014-2020 ITdaan.com
333
in a