Reputation: 1093
Automatically filled in login data are not accepted from input fields.
In general, I search for a solution like this:
self.webView.evaluateJavaScript("document.getElementsByName('username')[0].value = '[email protected]';", completionHandler: { (res, error) -> Void in
self.webView.evaluateJavaScript("document.getElementsByClassName('NextButton')[0].click()", completionHandler: {(result, error) -> Void in
print("Mail address is not accepted!")
})
})
But I have to emulate a virtual keyPress
event like this:
self.webView.evaluateJavaScript("document.getElementsByName('username')[0].focus()", completionHandler: {(result, error) -> Void in
self.webView.evaluateJavaScript("document.getElementsByName('username')[0].value = '[email protected]';", 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!")
})
The virtual keyPress
event has got two disadvantages for me:
keyPress
event is not deterministic and can take a long time.Any ideas for me?
Upvotes: 1
Views: 116