1

输入字段不接受自动填写的登录数据。

一般来说,我会寻找这样的解决方案:

self.webView.evaluateJavaScript("document.getElementsByName('username')[0].value = 'name@gmx.de';", completionHandler: { (res, error) -> Void in
   self.webView.evaluateJavaScript("document.getElementsByClassName('NextButton')[0].click()", completionHandler: {(result, error) -> Void in
       print("Mail address is not accepted!")    
   })
})

但我必须模拟这样的虚拟keyPress事件:

self.webView.evaluateJavaScript("document.getElementsByName('username')[0].focus()", completionHandler: {(result, error) -> Void in
    self.webView.evaluateJavaScript("document.getElementsByName('username')[0].value = 'name@gmx.d';", completionHandler: { (res, error) -> Void in
        let ep = CGEvent(keyboardEventSource: nil, virtualKey: 0x0E, keyDown: true)
        let eu = CGEvent(keyboardEventSource: nil, virtualKey: 0x0E, keyDown: false)
        ep!.post(tap: CGEventTapLocation.cghidEventTap)
        eu!.post(tap: CGEventTapLocation.cghidEventTap)
    })
})
self.webView.evaluateJavaScript("document.getElementsByClassName('NextButton')[0].click()", completionHandler: {(result, error) -> Void in
    print("Mail address is accepted!")    
})

虚拟keyPress活动对我来说有两个缺点:

  1. keyPress事件似乎不是确定性的,可能需要很长时间。
  2. 登录过程不能在后台完成。

对我有什么想法吗?

4

0 回答 0