Авторизация на spaces.ru

183
22 декабря 2018, 19:00

Пытаюсь реализовать авторизацию на http://spaces.ru через скрытый WebView. Логин и пароль вставляются в текстовые поля, но при form.submit() происходит какой-то глюк у WebView и ничего не загружается. Что может быть не так?

class LoginActivity : AppCompatActivity() {
    private lateinit var presenter: LoginPresenter
    @SuppressLint("SetJavaScriptEnabled")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
        wv.settings.javaScriptEnabled = true
        wv.settings.domStorageEnabled = true
        wv.webChromeClient = WebChromeClient()
        wv.webViewClient = LoginWebViewClient()
        wv.loadUrl("https://spcs.me/registration/loginform/")
    }
    class LoginWebViewClient : WebViewClient() {
        override fun onPageFinished(view: WebView?, url: String?) {
            super.onPageFinished(view, url)
            view!!.webViewClient = WebViewClient()
            view.loadUrl(
                    "javascript:(function() { " +
                            "var form = document.querySelector('div#main>div.widgets-group.widgets-group_top.nl.wbg>form.no_ajax');" +
                            "var loginField = form.querySelector('input[name=contact]');" +
                            "var passwordField = form.querySelector('input[name=password]');" +
                            "loginField.value = 'login';" +
                            "passwordField.value = 'password';" +
                            "form.submit();" +
                            "})()")
        }
    }
}
Answer 1

Сразу не подумал про вариант с кликом на кнопку входа. Вот так все работает:

var form = document.querySelector('div#main>div.widgets-group.widgets-group_top.nl.wbg>form.no_ajax');
var loginField = form.querySelector('input[name=contact]');
var passwordField = form.querySelector('input[name=password]');
var authButton = form.querySelector('button#cfms');
loginField.value = 'login';
passwordField.value = 'password';
authButton.click();
READ ALSO
Задача по JavaScript с DOM элементами?

Задача по JavaScript с DOM элементами?

помогите решить простую задачу, я вроде и сам решил но не понимаю что не правильно)

175
Нужно описывать типы данных в классе, после интерфейса?

Нужно описывать типы данных в классе, после интерфейса?

Класс Calculator имплементируется от ICalculator, где описаны все методы и их типы, стоит ли повторно это делать для параметров методов класса ? Если...

155
Проверка на строку js

Проверка на строку js

как сделать так, чтобы была проверка на то, что в url есть "?rid=1" например

251