Javascript исключение при вызове valuJavaScript - PullRequest
0 голосов
/ 27 сентября 2019

Моя цель:

  • Запустить скрипт jquery, чтобы нажать кнопку «добавить в корзину» на странице «определенного» стороннего веб-сайта.

Ожидаемый результат:

Запуск сценария с помощью valuJavaScript из WKWebView должен позволить мне нажать кнопку «Оформить заказ» и добавить продуктв корзину.

Фактический результат:

Запуск моего сценария с помощью valuJavascript дает мне исключение JavaScript (предоставляется ниже):

Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=0, WKJavaScriptExceptionMessage=, WKJavaScriptExceptionColumnNumber=0, NSLocalizedDescription=A JavaScript exception occurred}

В отличие от похожих вопросов, связанных с получением исключения javascript изvaluJavaScript, мое исключение возвращало довольно широкое исключение.«WKJavaScriptExceptionMessage» обычно очень описательный, но я не смог извлечь из него ничего полезного, чтобы исправить мою проблему с JavaScript.

При тестировании скрипт отлично работает на консоли Google Chrome и Safari инспектора (для мобильных устройств).Он смог выполнить ожидаемые результаты без проблем.Поэтому я не уверен, почему в первую очередь получаю исключение при запуске скрипта из valuJavascript .

Если вам интересно, это мой код из initializing / viewDidLoad:

   let config = WKWebViewConfiguration()
    let contentController = WKUserContentController()

    config.processPool = CurrentProcessPool.shared.getCurrentProcessPool()
    config.websiteDataStore = WKWebsiteDataStore.default()
    config.userContentController = contentController

    let webViewModel = WKWebView(frame: window.bounds, configuration: config)
    let productPageLink = "https://click.linksynergy.com/link?id=7yE5K5lr0eU&offerid=639733.3977&type=15&murl=https%3A%2F%2Fwww.rebeccaminkoff.com%2F%2F%2Fproducts%2Fsandra-puffer-f19100911-khaki"
    let url = myURL(string: productPageLink) 

    DispatchQueue.main.async {
        webViewModel.load(URLRequest(url: url))
    }

Здесь я загружаю скрипт:

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
          DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
          let size = "XXS"
          let myScript = """ 

             document.querySelector('.size-select [data-size-option = "\(size)" i]').click()
             document.querySelector('.add-to-cart').click()


          """

          webView.evaluateJavaScript(myScript, completionHandler: { (result, error) in
                  print(result)
                  print(error)
          })
    }

Дайте мне знать, если есть области, требующие уточнения, и я с радостью заполню эту информацию.

Было бы здорово понять, почему исключение javascript не предоставляет более подробную информацию! Спасибо!

...