输入字段不接受自动填写的登录数据。
一般来说,我会寻找这样的解决方案:
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
活动对我来说有两个缺点:
- 该
keyPress
事件似乎不是确定性的,可能需要很长时间。 - 登录过程不能在后台完成。
对我有什么想法吗?