0
votes

Aim: Access webpage and autoclick on a link using HTMLUnit and Java

What I tried: Tried clicking on "About" link on google.com website.

Code:

import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class autoPEC {
    public static void main(String[] args) throws IOException, URISyntaxException{
        WebClient webClient = new WebClient();
        HtmlPage currentPage = webClient.getPage("http://www.google.com/");
        HtmlAnchor advancedSearchAn = currentPage.getAnchorByText("About");
        currentPage = advancedSearchAn.click(); 
    }
}

Result: Error

Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement jsxFunction_addBehavior WARNING: Unimplemented behavior: #default#userdata Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:546] Error in expression. Invalid token "=". Was expecting one of: , , "/", , "-", , , ")", , "inherit", , , , , , , , , , , , , , , , , , , , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:552] Error in style rule. Invalid token "position". Was expecting one of: "}", ";". Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:552] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:859] Error in expression. Invalid token "=". Was expecting one of: , , "/", , "-", , , ")", , "inherit", , , , , , , , , , , , , , , , , , , , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:1419] Error in style rule. Invalid token ":". Was expecting one of: , "}", , ";", "/", , "-", , , , "!", "inherit", , , , , , , , , , , , , , , , , , , , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:1419] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:2203] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:2203] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:2543] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:2543] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:2616] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:2616] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:3194] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:3194] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:3701] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:3701] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:3761] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:3761] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:4196] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:4196] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:4960] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:4960] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:5610] Error in pseudo class or element. Invalid token ":". Was expecting one of: , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:5610] Ignoring the whole rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:6103] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:6103] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:6338] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:6338] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:6593] Error in expression. Invalid token "=". Was expecting one of: , , "/", , "-", , , ")", , "inherit", , , , , , , , , , , , , , , , , , , , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:6781] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:6781] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:6938] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:6938] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:7010] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:7010] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:7352] Error in style rule. Invalid token "". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:7352] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [2:199] Error in style rule. Invalid token "*". Was expecting one of: , "}", ";", . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [2:199] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [2:1082] Error in pseudo class or element. Invalid token ":". Was expecting one of: , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [2:1082] Ignoring the whole rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [2:1691] Error in style rule. Invalid token ":". Was expecting one of: , "}", , ";", "/", , "-", , , , "!", "inherit", , , , , , , , , , , , , , , , , , , , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [2:1691] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error WARNING: CSS error: [1:685] Error in style rule. Invalid token ":". Was expecting one of: , "}", , ";", "/", , "-", , , , "!", "inherit", , , , , , , , , , , , , , , , , , , , . Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning WARNING: CSS warning: [1:685] Ignoring the following declarations in this rule. Jan 15, 2016 10:17:15 AM com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement jsxFunction_addBehavior WARNING: Unimplemented behavior: #default#userdata Exception in thread "main" com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[a] attributeName=[] attributeValue=[About] at com.gargoylesoftware.htmlunit.html.HtmlPage.getAnchorByText(HtmlPage.java:550) at autoPEC.main(autoPEC.java:12)

Question: Can anyone tell me what im doing wrong and how this can be corrrected? Note that im new to HTMLUnit

2

2 Answers

0
votes

Disable javascript by adding the below line after creating new instance for WebClient.

webClient.getOptions().setJavaScriptEnabled(false);

and try again. This should work.

0
votes

You need to specify a browser to your WebClient constructor, otherwise you won't be able to connect to the page. Add this code (specifying a browser and removing the HtmlUnit logs):

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);

WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);

HtmlPage currentPage = webClient.getPage("http://www.google.com/");
HtmlAnchor advancedSearchAn = currentPage.getAnchorByText("About");
currentPage = advancedSearchAn.click();