簡體   English   中英

以編程方式單擊UIWebView中的“提交”按鈕(無元素ID,名稱,類或標簽)

[英]Programmatically clicking 'submit' button in UIWebView (no element id, name, class or tag)

我有以下代碼,用一些憑據填充了在UIWebView加載的網站登錄表單的用戶名和密碼字段。

   NSString *usernamescript = @"document.getElementById('h_username').value='testingusername';";
    [self.scrape stringByEvaluatingJavaScriptFromString:usernamescript];
    NSString *passwordscript = @"document.getElementById('h_password').value='testingpassword';";
    [self.scrape stringByEvaluatingJavaScriptFromString:passwordscript];

這些都成功填寫了輸入字段,因為兩個元素都有一個我可以引用的獨立id

但是,“提交”按鈕沒有可用於將點擊操作發送到的元素,ID,名稱,類或標記。

<span class="button"><input value="Log in" type="submit"/></span></div>

如何通過這些方法確定要嘗試引用的頁面上的哪個按鈕,從而對此特定的提交按鈕發送點擊?

這是以下形式的按鈕:

><div id="login"><div class="inner"><form id="homepageRegisteredLogin" action="/login/registeredUserUsernameAndPasswordLogin" method="post"><fieldset><legend class="off-screen">Login</legend><span class="label">Log in to my Opal account:</span><p id="loginErrorMessageBox" style="color: #fef7f5; background: #d21f01; text-align:center; margin: 0;display:none;"></p><div><label class="placeholder" for="h_username" id="username-label">Username</label><input maxlength="250" name="h_username" id="h_username" type="text"/>&nbsp;<label class="placeholder" for="h_password" id="password-label">Password</label><input maxlength="150" name="h_password" id="h_password" type="password"/>&nbsp;<input value="" name="attempt" type="hidden"/><span class="button"><input value="Log in" type="submit"/></span></div><a title="Forgot your username or password?" href="/login/forgotten">Forgot your username or password?</a></fieldset><div><input type="hidden" name="CSRFToken" value="28846d41-89b0-40ba-ae0f-6b644480385c"/>

也許有用的信息是: form id="homepageRegisteredLogin"

在下面的評論后編輯

 document.querySelector("input[type=submit]").click(); 
 ><div id="login"><div class="inner"><form id="homepageRegisteredLogin" action="/login/registeredUserUsernameAndPasswordLogin" method="post"><fieldset><legend class="off-screen">Login</legend><span class="label">Log in to my Opal account:</span><p id="loginErrorMessageBox" style="color: #fef7f5; background: #d21f01; text-align:center; margin: 0;display:none;"></p><div><label class="placeholder" for="h_username" id="username-label">Username</label><input maxlength="250" name="h_username" id="h_username" type="text"/>&nbsp;<label class="placeholder" for="h_password" id="password-label">Password</label><input maxlength="150" name="h_password" id="h_password" type="password"/>&nbsp;<input value="" name="attempt" type="hidden"/><span class="button"><input value="Log in" type="submit"/></span></div><a title="Forgot your username or password?" href="/login/forgotten">Forgot your username or password?</a></fieldset><div><input type="hidden" name="CSRFToken" value="28846d41-89b0-40ba-ae0f-6b644480385c"/> 

這可能對您有所幫助。

 NSString *performSubmitJS = @"var passFields = document.querySelectorAll(\"input[type='submit']\"); \
        passFields[0].click()";
 [webView stringByEvaluatingJavaScriptFromString:performSubmitJS];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM