2016-07-25 4 views
0

Я пытаюсь нажать кнопку в HtmlUnit для входа на сайт (m.pge.com), но он не работает. Браузер остается на одной странице. У меня была аналогичная проблема с другим сайтом. Я пробовал искать, но не получил окончательного ответа. Любые идеи, что я могу делать неправильно?Кнопка HtmlUnit не посылает

Вот код ..

Web_Client = new WebClient(BrowserVersion.CHROME); 
    Web_Client.getOptions().setCssEnabled(false); 
    Web_Client.getOptions().setThrowExceptionOnScriptError(false); 
    Web_Client.setJavaScriptTimeout(15000); 
    Web_Client.getOptions().setRedirectEnabled(true); 

    //Web_Client.setAjaxController(new NicelyResynchronizingAjaxController()); 
    // load home page 
    HtmlPage page = Web_Client.getPage("https://m.pge.com/#login"); 
    HtmlTextInput userName = loginForm.getFirstByXPath("//*[@id=\"usernameField\"]"); 
    HtmlPasswordInput passWord = loginForm.getFirstByXPath("//*[@id=\"passwordField\"]"); 
    userName.setValueAttribute(user); 
    passWord.setValueAttribute(password); 
    HtmlButton button = null; 
    DomNodeList<DomElement> buttonList = page.getElementsByTagName("button"); 
    for (Iterator buttonIter = buttonList.iterator(); buttonIter.hasNext();) { 
     DomElement domElement = (DomElement) buttonIter.next(); 
     if(domElement.asText().equals("SIGN IN")) { 
      button = (HtmlButton)domElement; 
     } 
    } 

    loginpage = button.click(); 

ответ

0

Это слишком утомительно и неясно ввести комментарий, так что я типа это как ответ и будет обновляться с прогрессом.

Часть 1: логин Прежде всего, убедитесь, что вы правильно нацелили кнопку и где вы инициализировали страницу входа в HtmlPage. Обычно, когда вы назначаете

loginpage = button.click(); 

Это поможет вам страницу входа в систему, но иногда это странно, что он не назначает новую страницу, а изменить текущую страницу. то есть ваш

page 

Вы можете попытаться распечатать его перед нажатием кнопки и после нажатия кнопки, чтобы увидеть, изменилась ли эта страница? что

System.out.println(page.asText()); 
button.click(); // no need to assign page, if the page changes itself 
System.out.println(page.asText()); 

Ч.2: Поиск

Когда вы сделали ввода текстового поля, и нажмите кнопку, вы должны предназначаться элемент изменения после поиска снова и получить его содержимое, например, если он является элементом , вы должны, вероятно, настроить таргетинг на элемент после нажатия кнопки и получить контент, который вы хотите впоследствии. Если вы нацеливаете его перед нажатием кнопки, содержимое в этом элементе не будет меняться, вам нужно снова это получить.

 Смежные вопросы

  • Нет связанных вопросов^_^