Какао Свифт: как автоматизировать клик по HTML, используя JavaScript с помощью WKWebView - PullRequest
1 голос
/ 30 апреля 2019

Я загружаю html-страницу внутри WKWebView, и мне нужно нажать на ссылку. Например. загрузка apple.com

override func viewDidAppear() {
    super.viewDidAppear()
    webView.load(urlString: "https://www.apple.com")
}

и поиск ссылок для нажатия:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!){
    webView.evaluateJavaScript("document.getElementsByClassName('cta-links')[0].innerHTML") { (result, error) in
        if error != nil {
            print(error?.localizedDescription ?? "")
        }
        if result != nil{
            print("code with links \(result)")
        }
    }

}

Я получу вывод:

<a href="/us/shop/goto/buy_iphone/iphone_xr" class="cta more" aria-label="Buy now with trade in" data-analytics-title="buy now with trade-in" data-analytics-region="buy">Buy<span class="visuallyhidden">with trade in</span></a>

<a href="/us/shop/goto/trade_in" class="cta more" aria-label="Learn more about trade in" data-analytics-title="Learn more about trade-in" data-analytics-region="learn more">Learn more</a>

Но мой вопрос к вам, ребята, как я могу нажать на эти ссылки, например, по этой ссылке:

<a href="/us/shop/goto/trade_in" class="cta more" aria-label="Learn more about trade in" data-analytics-title="Learn more about trade-in" data-analytics-region="learn more">Learn more</a>

Есть способ щелкнуть эту ссылку с помощью javascript или любым другим способом в swift?

Я буду очень признателен за вашу помощь.

1 Ответ

1 голос
/ 30 апреля 2019

Чтобы перейти по следующей ссылке, вам нужно как-то идентифицировать ее, для примера я буду использовать метку, поскольку класс не уникален, в идеале у вас должен быть идентификатор.

<a href="/us/shop/goto/trade_in" class="cta more" aria-label="Learn more about trade in" data-analytics-title="Learn more about trade-in" data-analytics-region="learn more">Learn more</a>

В вашем скрипте вам нужно будет найти этот элемент, вы можете использовать querySelectorAll (), чтобы сделать это.

let elementToClick = document.querySelectorAll('[aria-label="Learn more about trade in"]')[0];

А затем в вашем скрипте вызовите DOM click () method

elementToClick.click();

Это будет эмулировать щелчок и перенаправит вас на путь, указанный в href.

...