Add username and password fill
This commit is contained in:
parent
81f8318e73
commit
85c20935c0
4 changed files with 34 additions and 10 deletions
|
@ -6,7 +6,7 @@ open Twitter
|
||||||
let start driver =
|
let start driver =
|
||||||
let name_driver = prepare driver in
|
let name_driver = prepare driver in
|
||||||
let data_driver = run_process name_driver [] in
|
let data_driver = run_process name_driver [] in
|
||||||
let session_id = get_session (* ~headless:false *) () in
|
let session_id = get_session ~headless:false () in
|
||||||
data_driver, session_id
|
data_driver, session_id
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
open Pusk.Net
|
open Pusk.Net
|
||||||
open Pusk.Utils
|
open Pusk.Utils
|
||||||
|
|
||||||
let login_twitter ctx username _password =
|
let login_twitter ctx username password =
|
||||||
(* Navigate to login page and wait for page loaded*)
|
(* Navigate to login page and wait for page loaded*)
|
||||||
ignore (navigate ctx.session_id "https://twitter.com/i/flow/login");
|
ignore (navigate ctx.session_id "https://twitter.com/i/flow/login");
|
||||||
Unix.sleep 5;
|
Unix.sleep 5;
|
||||||
(* Find username input *)
|
(* Find username input *)
|
||||||
let element_id =
|
let input_username =
|
||||||
match
|
match
|
||||||
find
|
find
|
||||||
ctx.session_id
|
ctx.session_id
|
||||||
|
@ -20,5 +20,27 @@ let login_twitter ctx username _password =
|
||||||
else List.nth l 0
|
else List.nth l 0
|
||||||
in
|
in
|
||||||
(* Insert the username *)
|
(* Insert the username *)
|
||||||
send_keys ctx.session_id element_id username
|
send_keys ctx.session_id input_username username;
|
||||||
|
Unix.sleep 1;
|
||||||
|
send_keys ctx.session_id input_username Keys.return;
|
||||||
|
Unix.sleep 3;
|
||||||
|
(* Find password input *)
|
||||||
|
let input_password =
|
||||||
|
match
|
||||||
|
find
|
||||||
|
ctx.session_id
|
||||||
|
(XPath
|
||||||
|
"/html/body/div[1]/div/div/div[1]/div/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div[1]/div/div/div[3]/div/label/div/div[2]/div[1]/input")
|
||||||
|
with
|
||||||
|
| [] -> raise (Any "Password input not found")
|
||||||
|
| _ as l ->
|
||||||
|
if List.length l > 1
|
||||||
|
then raise (Any "Too many element found as the password input")
|
||||||
|
else List.nth l 0
|
||||||
|
in
|
||||||
|
(* Insert password *)
|
||||||
|
send_keys ctx.session_id input_password password;
|
||||||
|
Unix.sleep 1;
|
||||||
|
send_keys ctx.session_id input_password Keys.return;
|
||||||
|
Unix.sleep 5
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -113,10 +113,8 @@ let find session_id strategy =
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let send_keys session_id element_id username =
|
let send_keys session_id element_id username =
|
||||||
let response =
|
ignore
|
||||||
execute_post_request
|
(execute_post_request
|
||||||
(fmt "%s/element/%s/value" (driver session_id) element_id)
|
(fmt "%s/element/%s/value" (driver session_id) element_id)
|
||||||
(Json.send_keys_payload username)
|
(Json.send_keys_payload username))
|
||||||
in
|
|
||||||
print_endline response
|
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -17,3 +17,7 @@ let keys_to_typing str =
|
||||||
in
|
in
|
||||||
aux [] (String.length str)
|
aux [] (String.length str)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
module Keys = struct
|
||||||
|
let return = "\\ue006"
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in a new issue