Отправить заявку через кнопку javascript - Swift - PullRequest
0 голосов
/ 08 марта 2019

Возможно, название не на 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)

Но я полностью потерян для того, чтобы отправить запрос ... Есть идеи? Спасибо!

EDIT:

Это 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>

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Получите элемент и затем вызовите .submit() для него.

webView.evaluateJavaScript("document.getElementById('FORM').submit()", completionHandler: nil)

что-то подобное может сделать работу за вас.

Поскольку форма не имеет идентификатора, я предполагаю, что вы не контролируете веб-сайт, который вы показываете, поэтому добавление идентификатора не вариант. Поскольку у меня нет всей страницы, я хотел бы получить идентификатор для получения. Вы можете перемещаться по DOM и получить дочерний элемент формы с идентификатором, а затем запросить родителя.

document.getElementById('__anti-forgery-token').parentNode.submit()

Это должно вызвать отправку формы.

0 голосов
/ 08 марта 2019

Я нашел ответ. Вместо использования «submit ()» в TagName я использовал «click ()» следующим образом:

webView.evaluateJavaScript("document.getElementsByTagName('button')[0].click()", completionHandler: nil)
...