通过按钮 javascript - Swift 提交请求
Submit request via button javascript - Swift
标题可能不是 100% 正确。我正在 Swift 中编写一个应用程序,之后我填写了我要提交的表单的两个字段。所以按钮是这样创建的:
<button class="mb3 w-100 input-reset sans-serif pointer bg-blue hover-bg-white hover-blue bg-animate ba ph3 pv2 lh-copy white b--blue b br0" data-test="login-btn">Log in</button>
填写我使用的表格的第 2 个字段:
webView.evaluateJavaScript("document.getElementsByName('email')[0].value='\(firstTf.text!)'", completionHandler: nil)
但是我完全不知道如何提交请求...有什么想法吗?谢谢!
编辑:
这是表格 HTML 代码:
<form action="/login" class="measure center" data-test="login-form" method="POST"><input id="__anti-forgery-token" name="__anti-forgery-token" type="hidden" value="I/ulxtAepoMOjZvudrMhXDSqp89wIKM6hPkw7G6xHyYOqfcQIi3S/EVey1L7/CvHZI3SCbJ3Qa5rcl4j"><div class="mb3"><label class="db f6 mb2 b">Email</label><input class="mb1 pv2 lh-copy ph3 input-reset sans-serif black-80 ba bg-transparent w-100 b--black-20" name="email" type="email"><div class="f6 black-50 dn">Don't worry, we hate spam as much as you do</div></div><div class="mb3"><label class="db f6 mb2 b">Password</label><input class="pv2 lh-copy ph3 input-reset sans-serif ba bg-transparent w-100 b--black-20" name="password" type="password"></div><div class="mv3 lh-title"></div><div><button class="mb3 w-100 input-reset sans-serif pointer bg-blue hover-bg-white hover-blue bg-animate ba ph3 pv2 lh-copy white b--blue b br0" data-test="login-btn">Log in</button></div><div class="f6 black-50 tc lh-copy"><div><a class="link blue hover-dark-blue ml1 dib" data-test="forgot-password" href="/reset-password">Forgot your password?</a></div></div></form>
获取元素,然后对其调用 .submit()
。
webView.evaluateJavaScript("document.getElementById('FORM').submit()", completionHandler: nil)
像这样的东西可能适合你。
由于表单没有 ID,我假设您无法控制所显示的网站,因此添加 ID 不是一个选项。因为我没有整个页面,所以我想从中获取一个 id。您可以导航 DOM 并获取具有 ID 的表单的子项,然后请求父项。
document.getElementById('__anti-forgery-token').parentNode.submit()
这应该调用表单的提交。
我在 TagName 上找到了使用 "submit()" 的 answer.Instead,我使用 "click()" 如下:
webView.evaluateJavaScript("document.getElementsByTagName('button')[0].click()", completionHandler: nil)
标题可能不是 100% 正确。我正在 Swift 中编写一个应用程序,之后我填写了我要提交的表单的两个字段。所以按钮是这样创建的:
<button class="mb3 w-100 input-reset sans-serif pointer bg-blue hover-bg-white hover-blue bg-animate ba ph3 pv2 lh-copy white b--blue b br0" data-test="login-btn">Log in</button>
填写我使用的表格的第 2 个字段:
webView.evaluateJavaScript("document.getElementsByName('email')[0].value='\(firstTf.text!)'", completionHandler: nil)
但是我完全不知道如何提交请求...有什么想法吗?谢谢!
编辑:
这是表格 HTML 代码:
<form action="/login" class="measure center" data-test="login-form" method="POST"><input id="__anti-forgery-token" name="__anti-forgery-token" type="hidden" value="I/ulxtAepoMOjZvudrMhXDSqp89wIKM6hPkw7G6xHyYOqfcQIi3S/EVey1L7/CvHZI3SCbJ3Qa5rcl4j"><div class="mb3"><label class="db f6 mb2 b">Email</label><input class="mb1 pv2 lh-copy ph3 input-reset sans-serif black-80 ba bg-transparent w-100 b--black-20" name="email" type="email"><div class="f6 black-50 dn">Don't worry, we hate spam as much as you do</div></div><div class="mb3"><label class="db f6 mb2 b">Password</label><input class="pv2 lh-copy ph3 input-reset sans-serif ba bg-transparent w-100 b--black-20" name="password" type="password"></div><div class="mv3 lh-title"></div><div><button class="mb3 w-100 input-reset sans-serif pointer bg-blue hover-bg-white hover-blue bg-animate ba ph3 pv2 lh-copy white b--blue b br0" data-test="login-btn">Log in</button></div><div class="f6 black-50 tc lh-copy"><div><a class="link blue hover-dark-blue ml1 dib" data-test="forgot-password" href="/reset-password">Forgot your password?</a></div></div></form>
获取元素,然后对其调用 .submit()
。
webView.evaluateJavaScript("document.getElementById('FORM').submit()", completionHandler: nil)
像这样的东西可能适合你。
由于表单没有 ID,我假设您无法控制所显示的网站,因此添加 ID 不是一个选项。因为我没有整个页面,所以我想从中获取一个 id。您可以导航 DOM 并获取具有 ID 的表单的子项,然后请求父项。
document.getElementById('__anti-forgery-token').parentNode.submit()
这应该调用表单的提交。
我在 TagName 上找到了使用 "submit()" 的 answer.Instead,我使用 "click()" 如下:
webView.evaluateJavaScript("document.getElementsByTagName('button')[0].click()", completionHandler: nil)