6

I'm trying to create a PowerShell script to open Internet Explorer, navigate to https://clockify.me/login , fill in the email and password inputs and submit the form or click the log in button.

The problem is that, when filling the inputs using:

  • document.getElementById("email").value="123"
  • document.getElementById("password").value="123"

I have the following results:

  • When I submit the form with document.forms[0].submit() the pages reload with URL https://clockify.me/login?email=&password= and nothing happens
  • When I click the button, using javascript or manually, it considers that the inputs are empty

So, is there a way to work around this? Either using purely javascript or PowerShell (I wish to keep the IE window invisible)

Thanks!

lumbric
  • 7,644
  • 7
  • 42
  • 53
  • Have you tried doing `Invoke-RestMethod` against the site and sending your auth information in the headers? – trebleCode Jun 07 '18 at 18:41

1 Answers1

10

Even though you are changing the values of the input DOM objects, that is not enough to trigger the change detection of the underlying Angular libraries, thus making the form appear 'empty'.

The following pure JS example works on Chrome, but I have not tested it in Internet Explorer:

let email = document.getElementById("email");
let password = document.getElementById("password");
let button = document.getElementsByTagName("button")[0];

email.value = 'someone@example.com';
password.value = 'yourpassword';

// Trigger change detection
email.dispatchEvent(new Event('input'));
password.dispatchEvent(new Event('input'));

button.click();

In case dispatchEvent does not work in IE, you could try with createEvent and initEvent. See dispatchEvent not working in IE11

user2551768
  • 488
  • 6
  • 11
  • 1
    Thanks a lot! That didn't work with IE but, with the link you provided, I managed to get it to work. May I ask how do you know the string in the new Event is 'input'? – Fabio Leonardo Jun 11 '18 at 12:46
  • 1
    From MDN https://developer.mozilla.org/en-US/docs/Web/Events and specifically https://developer.mozilla.org/en-US/docs/Web/Events/Input. _"The DOM input event is fired synchronously when the value of an – user2551768 Jun 11 '18 at 13:09