Javascript 以编程方式单击';提交';UIWebView中的按钮(无元素id、名称、类或标记)

Javascript 以编程方式单击';提交';UIWebView中的按钮(无元素id、名称、类或标记),javascript,html,ios,objective-c,uiwebview,Javascript,Html,Ios,Objective C,Uiwebview,我有以下代码,用一些凭据填充我的UIWebView中加载的网站登录表单的用户名和密码字段 NSString *usernamescript = @"document.getElementById('h_username').value='testingusername';"; [self.scrape stringByEvaluatingJavaScriptFromString:usernamescript]; NSString *passwordscript = @"do

我有以下代码,用一些凭据填充我的
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"/>
>登录到我的Opal帐户:

用户名密码
也许有用的信息是:
formid=“homepageRegisteredLogin”

在下面的评论之后编辑
document.querySelector(“输入[type=submit]”)。单击()

>登录到我的蛋白石帐户:

用户名密码
这可能对您有所帮助

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

为什么不给
输入属性
name
?@fedorqui该网站不是我的,我用它来webscrape/SiteScrapeMmm,那么
getElementByTagName
呢?还有@fedorqui,你能提供一个关于这是如何工作的答案吗?老实说,不是真的。如果你提供一个JSFIDLE,我可以玩一点,但是我不能从头开始写东西。谢谢,但是根据我收到的HTTP 405错误代码,登录表单不支持这种请求方法“GET”。你认为我还可以使用其他方法吗?试试上面的另一种方法,尽管似乎还有其他问题,但我发布的两种方法都没有改变表单方法。这种方法仍然不太好。他们正在单击提交按钮,所以这是另外一个错误。第一种方法更好,因为它提交正确的表单,而这种方法是单击任何提交按钮,因此如果有多个按钮,则可能单击错误的按钮。返回到
document.getElementById('homepageRegisteredLogin')。submit()
并找出其他错误。在这条线路的某个地方,它被改为GET方法,而不是POST。旧的答案是正确的答案,我认为-这是网站端遇到的一些问题(可以通过一些重定向修复)