Description
I'm trying to access my own banking details (not other peoples!) by clicking on the 'Continue' button of:
https://onlinebanking.nationwide.co.uk/AccessManagement/IdentifyCustomer/IdentifyCustomer
but without success. I have tried a normal 'click()' on the button, but nothing happens no matter how long I wait.
I have already successfully used Selenium in a .Net program to overcome this problem, and whilst the Selenium version (in C#) also seems to ignore a 'click()', when I use:
JavaScriptExecutor.ExecuteScript("arguments[0].click();", targetButton);
it does have the required effect, i.e. the button 'clicks' and I transfer to the next html page so all is good.
Using a similar approach with 'htmlunit-android' however, there doesn't seem to be an extension 'executeScript' that I can use with 'JavaScriptExcutor'. Have I missed something? Is it there under another guise??
Here's the Kotlin snippet (sorry its not Java, but I have to use Kotlin because Java doesn't support co-routines):
import org.htmlunit.javascript.background.JavaScriptExecutor
import org.htmlunit.WebClient
import org.htmlunit.html.HtmlButton
import org.htmlunit.html.HtmlPage
private lateinit var mainScreen : HtmlPage
var webClient = WebClient() // Create the webClient
var myURL = "https://onlinebanking.nationwide.co.uk/AccessManagement/IdentifyCustomer/IdentifyCustomer"
var mainPage = webClient.getPage(myURL) as HtmlPage // Retrieve the target page
var jsexecutor: JavaScriptExecutor = webClient as JavaScriptExecutor // Declare a JS executor
var buttonsList = mainPage.getElementsByTagName("button") as List<HtmlButton> // Find all buttons
for (targetButton in buttonsList ) // Loop round the buttons
{
if (targetButton.textContent == "Continue") // This is the one I'm looking for
{
jsexecutor.executeScript("arguments[0].click();", targetButton) // <= 'executeScript'!! isn't there!
}
}
Thanks in advance for any assistance