如何使用Swift 2.0模拟用户点击网页按钮?

时间:2016-01-21 18:40:37

标签: javascript button click swift2 simulate

我想编写假用户点击网页视图按钮以自动加载正确的网页。我在Swift 2.0中工作,url不包含任何索引页。

2 个答案:

答案 0 :(得分:0)

如果使用javascript来显示页面

,则可以在应用程序Web视图中注入javascript

如果你使用UIWebView使用方法stringByEvaluatingJavaScriptFromString(jscodestring)

如果使用WKWebView使用方法evaluateJavaScript(jscodestring)

然后它是一个javascript问题。

  • 首先看一下要点击的元素:文档。 getElementById或getElementByName,document.querySelector等...

  • 然后使用html dom方法click();

答案 1 :(得分:0)

更新的解决方案:它很难看,但有效。该网站要求您跳过一些箍来使用它,但secondURL将加载一个只是表格的页面。

肯定有一个更清洁的解决方案,它不需要JS或多个页面加载,但我把它留给你。

我通过查看Safari的Web Inspector

找到了secondURL
import UIKit

private let firstURL = NSURL(string: "https://legymnase67.la-vie-scolaire.fr/vsn.main/;jsessionid=E2D99A46028465A9D7F636521C64088B.node2?autolog=70caa4a471e8f6f0856735aed506b01a6307246c445beb160259f75c1c700f7978631d698cc5e0e890452bd182e5960e6153be7c4a3d2615ff0daf981a17877d46e472cdf2ef2328977c3957a58121e3556c4b9b808e22a76d0cbb994292a2144d64f367714c7dfbf4d3e24cea5f0274")!
private let secondURL = NSURL(string: "https://legymnase67.la-vie-scolaire.fr/vsn.main/releveNote/releveNotes")!

class WebController: UIViewController, UIWebViewDelegate {

    let webView: UIWebView = UIWebView()

    override func viewDidLoad() {
        super.viewDidLoad()
        self._setupWebView()

        // load the webpage, wait 6 seconds then tap the button
        webView.loadRequest(NSURLRequest(URL: firstURL))
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(6 * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), {
            self.tapButton();

            // wait another 4 seconds then load the direct notes url
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(4 * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), {
                self.webView.loadRequest(NSURLRequest(URL: secondURL))

                // allow the page to load, and print the html
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(4 * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), {
                    print(self.webView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML"))
                })
            })
        })
    }

    func tapButton() {
        webView.stringByEvaluatingJavaScriptFromString("changeIframeSrc(this, 'NOTES');")
    }

    func _setupWebView() {
        webView.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(webView)

        let views = ["webView":webView]
        self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[webView]|", options: [], metrics: nil, views: views))
        self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[webView]|", options: [], metrics: nil, views: views))
    }
}