diff --git a/bin/main.ml b/bin/main.ml index 3e7104b..80147cd 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -6,7 +6,7 @@ open Twitter let start driver = let name_driver = prepare 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 ;; diff --git a/bin/twitter.ml b/bin/twitter.ml index 92bd23b..34bd121 100644 --- a/bin/twitter.ml +++ b/bin/twitter.ml @@ -1,12 +1,12 @@ open Pusk.Net open Pusk.Utils -let login_twitter ctx username _password = +let login_twitter ctx username password = (* Navigate to login page and wait for page loaded*) ignore (navigate ctx.session_id "https://twitter.com/i/flow/login"); Unix.sleep 5; (* Find username input *) - let element_id = + let input_username = match find ctx.session_id @@ -20,5 +20,27 @@ let login_twitter ctx username _password = else List.nth l 0 in (* 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 ;; diff --git a/lib/net.ml b/lib/net.ml index 49db7fe..c1985fe 100644 --- a/lib/net.ml +++ b/lib/net.ml @@ -113,10 +113,8 @@ let find session_id strategy = ;; let send_keys session_id element_id username = - let response = - execute_post_request - (fmt "%s/element/%s/value" (driver session_id) element_id) - (Json.send_keys_payload username) - in - print_endline response + ignore + (execute_post_request + (fmt "%s/element/%s/value" (driver session_id) element_id) + (Json.send_keys_payload username)) ;; diff --git a/lib/utils.ml b/lib/utils.ml index e76fde5..81c530b 100644 --- a/lib/utils.ml +++ b/lib/utils.ml @@ -17,3 +17,7 @@ let keys_to_typing str = in aux [] (String.length str) ;; + +module Keys = struct + let return = "\\ue006" +end