Моя цель:
- Запустить скрипт 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 не предоставляет более подробную информацию! Спасибо!