Почему .click () в HtmlUnit не работает в моем коде? - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь сделать отправителя электронной почты для inbox.lv

Я дошел до того, что могу войти, получить доступ к странице составления писем и писать в материалахнапример: reciever и само сообщение.

Но моя проблема в том, что .click() возвращает меня на ту же страницу, что и раньше. Я использую page.asTxt, чтобы проверить это.

Вот мой код:

public class main {
    public static void main(String[] args) {
        String loginUrl = "https://www.inbox.lv/";
        String login = "actualemail@inbox.lv";
        String password = "Actualemail" ;

        String reciever = "actualemail@inbox.lv";
        String theme = "testing";
        String message = "Hello i am testing";

        java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
        System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

        try {
            System.out.println("Starting autoLogin on " + loginUrl);
            WebClient client = autoLogin(loginUrl, login, password);
            sendmail(client,reciever,theme,message);
        } catch (Exception e) {
            e.printStackTrace();
        }


    }



    public static WebClient autoLogin(String loginUrl, String login, String password) throws FailingHttpStatusCodeException, MalformedURLException, IOException{
        WebClient client = new WebClient();
        client.getOptions().setCssEnabled(false);
        client.getOptions().setJavaScriptEnabled(true);
        client.getOptions().setThrowExceptionOnScriptError(false);
        client.setAjaxController(new NicelyResynchronizingAjaxController());

        HtmlPage page = client.getPage(loginUrl);

        HtmlInput inputPassword = page.getFirstByXPath("//input[@id='pass']");
        HtmlInput inputLogin = page.getFirstByXPath("//input[@id='imapuser']");

        inputLogin.setValueAttribute(login);
        inputPassword.setValueAttribute(password);

        HtmlForm loginForm = inputPassword.getEnclosingForm() ;
        page = client.getPage(loginForm.getWebRequest(null));

        return client;
    }

    public static void sendmail(WebClient client, String reciever, String theme, String message) throws IOException {
        HtmlPage page = client.getPage("https://mail.inbox.lv/compose?mailbox=INBOX&page=1");

        HtmlInput inputReciever = page.getFirstByXPath("//input[@id='suggest-to']");
        HtmlInput inputTheme = page.getFirstByXPath("//input[@id='subject']");
        HtmlTextArea inputMessage = page.getFirstByXPath("//textarea[@id='message']");

        inputReciever.setValueAttribute(reciever);
        inputTheme.setValueAttribute(theme);
        inputMessage.setText(message);

        System.out.println(page.asText());
        System.out.println("____________________________________________________________________");


        HtmlButton send = page.getFirstByXPath("//button[@id='toolbar_primary_btn_send']");
        HtmlPage sendPage=send.click();
        client.waitForBackgroundJavaScript(10000);

        try {
            Thread.sleep(5000);
        }catch (Exception e){
            System.out.println("Can't sleep thread");
        }

        System.out.println(sendPage.asText());
    }
}

Несколько отпечатков страницы, чтобы проверить страницудо и после отправки.

Электронная почта и пароль в коде являются законными, поэтому вы можете использовать их для перехода на страницу «Написать письмо».

...