标签: htmlunit

如何使用htmlunit单击javascript按钮?

我正在开发一个应用程序,它将使用Java中的htmlunit自动单击网页上的按钮.唯一的问题是该按钮是一个javascript按钮,因此标准的getInputByName()将不起作用.处理这个的任何建议?该按钮的代码包含在下面.

<a class="vote_1" id="1537385" href="/javascript%3Avoid%280%29/index"><img src="/images/parts/btn-vote.gif" alt="Btn-vote" /></a> 
Run Code Online (Sandbox Code Playgroud)

另外,这是投票的其他代码.

<div id="content"><script type="text/javascript" src="/js/scriptFeeds/voteArticle.js"></script> 
Run Code Online (Sandbox Code Playgroud)

这导致以下javascript:

var pressed = new Array();

$j(document).ready(function() {
var nr = $j("input#number_of_articles").val();
for(var i=1; i<=nr; i++){
    $j("a.vote_"+i).click(function(){
        var article   = $j(this).attr("id");
        $j('#'+article).hide();
        if (!pressed[article]) {
            pressed[article] = "yes";
            jQuery.post('/vote-article', {
                _token: $j("#_token").val(),
                article_id: article
            },function(data) {
                $j("span.numberOfVotes_"+data.id).html(data.votes);
            }, "json");
        }
        return false;
    });
}
});
Run Code Online (Sandbox Code Playgroud)

javascript java htmlunit

3
推荐指数
3
解决办法
1万
查看次数

使用 HtmlUnit 执行 javascript 时出错

我正在尝试在以下 URL 上执行 JavaScript:http://steamcommunity.com/id/bobcatchris/inventory#730。我可以使用 google chrome 通过按 ctrl+shift+j 打开控制台并粘贴以下脚本来完成此操作:

var list = []; 
var size = Object.keys(g_ActiveInventory.rgInventory).size();    
var counter = 0;
while (counter < size) {
 list.push(g_ActiveInventory.rgInventory[Object.keys(g_ActiveInventory.rgInventory)[counter]].market_name);
 counter +=1;
}
Run Code Online (Sandbox Code Playgroud)

它返回: 150 然后在下一行中,我写:>list 它返回一个长度为 150 的数组。

当我尝试这样做时HtmlUnit

 public static void main(String[] args) throws IOException {
        WebClient webClient=new WebClient(BrowserVersion.FIREFOX_17);
        HtmlPage page=webClient.getPage("http://steamcommunity.com/id/bobcatchris/inventory#730");
        String script="var list = [];\n" +
                "\n" +
                "\n" +
                "var size = Object.keys(g_ActiveInventory.rgInventory).size();\n" +
                "\n" +
                "\n" +
                "\n" +
                "var counter = 0;\n" …
Run Code Online (Sandbox Code Playgroud)

javascript java google-chrome htmlunit

3
推荐指数
1
解决办法
9110
查看次数

HttpClient vs HtmlUnit

我知道HtmlUnit模拟浏览器,而HttpClient不是.

HtmlUnit,当一个页面加载并且里面有一个JavaScript时,脚本会被执行吗?如果脚本设置了cookie,cookie是否会在HtmlUnit浏览器中设置并可从Java代码访问?

有没有什么可以使用HttpClient,但不能使用HtmlUnit?在HtmlUnit,我们可以从POST请求开始并修改HTTP请求的任何部分,包括方法,URI,HTTP版本,标题和正文吗?

有什么优势HttpClientHtmlUnit

java httpclient htmlunit

3
推荐指数
1
解决办法
568
查看次数

HtmlUnit 通过包含字符串的类名获取元素

我想在 HtmlPage 中找到包含“日期”一词的类的任何元素。

即我想匹配以下任何一项:

<div class = 'date'> August 13 2017 </div>
<span class = 'pubDate'> August 12 2017 </div>
<div class = 'datePublished'> August 10 2017 </div>
Run Code Online (Sandbox Code Playgroud)

为了完全匹配“日期”,我使用以下内容:

HtmlPage page;
List<HtmlDivision> date = page.getByXPath("//div[@class='date']");
System.out.println(date.get(0));
Run Code Online (Sandbox Code Playgroud)

哪个工作正常。

但是,我如何更改它(或者我应该使用其他什么),以便能够匹配具有包含单词 date(不区分大小写)的类名的任何元素?

java url htmlunit web-scraping

3
推荐指数
1
解决办法
8689
查看次数

如何在HtmlUnit测试用例中添加用户名/密码认证信息?

我通过http协议访问svn存储库.当我将URL放入Internet Explorer时,它会提示我输入用户名/密码的对话框,然后在浏览器中正确加载文件.

我需要做的是从这个svn存储库下载来自不同标签的大量文件.我试图使用HtmlUnit自动下载这些文件.不幸的是,它给了我"401 Authorization Required ..."错误.我不知道如何在我的HtmlUnit测试中设置用户ID /密码信息.

请一位善良的灵魂帮助我吗?

java htmlunit

2
推荐指数
1
解决办法
3316
查看次数

面对HtmlUnitDriver的问题

我正在使用HtmlUnitDriver打开一个链接.这是我的代码:

HtmlUnitDriver webDriver = new HtmlUnitDriver();
webDriver.get("some url here");
Run Code Online (Sandbox Code Playgroud)

但我得到以下例外.

Caused by: com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot find function aa in object [object Object]. (https://apis.google.com/_/apps-static/_/js/gapi/plusone/rt=j/ver=use0LfpKko4.en_US./sv=1/am=!CVDWKorrwvOYBs7wcQ/d=1/rs=AItRSTMxl0wiQySaT0IYW5gyOkdlVL9A6A/cb=gapi.loaded_0#3)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:499)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:973)
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:349)
    at com.gargoylesoftware.htmlunit.html.HtmlScript$1.execute(HtmlScript.java:230)
    at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:240)
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:598)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:556)
    at org.cyberneko.html.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1142)
    at org.cyberneko.html.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1044)
    at org.cyberneko.html.filters.DefaultFilter.endElement(DefaultFilter.java:206)
    at org.cyberneko.html.filters.NamespaceBinder.endElement(NamespaceBinder.java:329)
    at org.cyberneko.html.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3018)
    at org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2005)
    at org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:908)
    at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:499)
    at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:452)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:789)
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:225)
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:179)
    at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:221)
    at …
Run Code Online (Sandbox Code Playgroud)

java selenium htmlunit

2
推荐指数
1
解决办法
4824
查看次数

使用HtmlUnit时找不到404

我有以下代码:

WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://www.myland.co.il/%D7%9E%D7%97%D7%A9%D7%91-%D7%94%D7%A9%D7%A7%D7%99%D7%94");
Run Code Online (Sandbox Code Playgroud)

代码失败,出现com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException:404找不到http://www.myland.co.il/Scripts/swfobject_modified.js

我确实在控制台输出中看到了我感兴趣的HTML页面.有没有办法来抑制异常并获得一个Html页面呢?该页面在真实浏览器中正确加载.

htmlunit

2
推荐指数
1
解决办法
2971
查看次数

如何使用HtmlUnit从html页面中提取元素

在解析html页面时,我有两个问题(实际上是问题)HtmlUnit.我尝试了他们的"入门"以及搜索谷歌但没有帮助.这是我的第一个问题.

1)我想bold从页面中提取以下标签的文本

<b class="productPrice">Five Dollars</b>
Run Code Online (Sandbox Code Playgroud)

2)我想在以下结构的最后一段中提取整个文本(包括进一步的跨度或链接文本,如果存在)

<div class="alertContainer">
<p>Hello</p>
<p>Haven't you registeret yet?</p>
<p>Registrations will close on 3 July 2012.<span>So don't wait</span></p>
</div>
Run Code Online (Sandbox Code Playgroud)

你可以请一行代码片段我该怎么做?我是HtmlUnit的新手.

编辑:

HtmlUnit的getElementByName()getElementById(),所以我们如何使用,如果我们想用类选择?

这将是我的第一个问题的答案.

java htmlunit web-scraping

2
推荐指数
1
解决办法
7009
查看次数

机器人框架的确切用途是什么?

我着迷于机器人。您知道,通常它使我们的工作变得容易,对于Web,一旦在网络服务器上初始化了我们的机器人,您就无需走到链接的任何地方。

让我们来回答我们的主要问题:

Robot Framework..的确切用途是什么。我擅长Java,但不擅长Python。我可以在Java中使用它吗?用于什么目的Robot Framework

我擅长HTMLUnit。但是它可以用于解析HTML源代码,我们也可以在Java中实现它以生成源代码。但是呢Robot Framework

我用谷歌搜索了2个小时,但找不到确切答案。如果您想了解我的任何信息,请告诉我。

python java htmlunit robotframework

2
推荐指数
1
解决办法
4980
查看次数

如何使用HTMLUnit代理服务器?

我正在使用HTMLUnit并且想使用代理服务器.我对此并不太了解,但我的印象是http://proxylist.hidemyass.com/上列出的其中一台服务器可以使用.

这是我的代码:

public class App {

    public static void main(String[] args) throws Exception {
        WebClient webClient = new WebClient(BrowserVersion.FIREFOX_31, "61.234.249.126", 8118);

        HtmlPage page       = webClient.getPage("http://www.google.com");
        webClient.close();

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

}
Run Code Online (Sandbox Code Playgroud)

从这样的列表中随机选择了IP和端口 - 就像我和其他几个一样.

但它最终说它超时了.我想并不是所有的代理服务器都能正常工作,但我已经用十几个地址完成了这个,所以我开始怀疑它是我的代码而不是服务器本身的问题.

我这样做了吗?

java proxy htmlunit

2
推荐指数
1
解决办法
6583
查看次数