标签: htmlunit

关闭HtmlUnit警告

你知道如何关闭HtmlUnit中的警告,注释,错误吗?

warnings htmlunit

57
推荐指数
6
解决办法
4万
查看次数

Selenium v​​s HtmlUnit?

我试图更好地理解测试框架,并一直在研究Selenium.我之前使用过HTMLUnit,主要是因为我需要从网站或类似网站上删除一些信息.

在编写测试自动化的背景下,Selenium与HTMLUnit的优点/缺点是什么?在我看来,Selenium设置比HTMLUnit更复杂,虽然同时有一个用于Selenium的HTMLUnitDriver,我认为它的行为方式与HTMLUnit本身完全相同?

Selenium显然提供了更强大的框架,它有Selenium RC用于pararel测试,它也有不同的浏览器驱动程序可以使用 - 虽然当你使用浏览器驱动程序时,测试实际上会打开/关闭浏览器应用程序而不是无头.

可能是我没有正确理解Selenium.一些方向和指针会很棒!

另一个注意事项 - 一个单独的问题 - 我也在考虑在移动浏览器上进行自动化测试,我看到Selenium有一个IPhoneDriver,但是这不是无头测试,因为它需要实际的iOS模拟器.

反正在移动网站上进行无头测试吗?更改用户代理是否足够?我已经看到一些关于改变用户代理的帖子似乎有他们自己的挑战,例如.在Selenium RC中设置用户代理

非常感谢!

selenium automated-tests htmlunit

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

HtmlUnitDriver(HtmlUnit)与GhostDriver(PhantomJS)?

我们正在选择我们的无头浏览器驱动程序解决方案,这将是Selenium WebDriver的一些实现.还有就是GhostDriver,利用的是PhantomJS在在一侧和后端HtmlUnitDriver其基于的HtmlUnit另一方.

PhantomJS使用Safari的渲染引擎WebKit来渲染页面,而HtmlUnitDriver使用其他浏览器没有使用的Rhino引擎(它只是"模拟"浏览器行为.最后一个事实被视为con,因为渲染行为可能与流行的浏览器.

我们认为,PhantomJS是一个更强大的候选人.但是,我们并不知道所有事情:)我们的决定是否还应考虑其他因素和权衡取舍?HtmlUnitDriver可以成为更好的解决方案的其他场景?

htmlunit phantomjs selenium-webdriver ghostdriver htmlunit-driver

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

使用无头浏览器进行Android Web Scraping

我花了一天时间研究一个可以用来完成以下工作的库:

  • 像在后台中一样检索网页的完整内容,而不将结果呈现给视图.
  • 例如,lib应该支持在初始HTML加载之后触发ajax请求以加载一些额外结果数据的页面.
  • 从生成的html我需要抓取xpath或css选择器表单中的元素.
  • 将来我也可能需要导航到下一页(关闭事件,提交按钮/链接等)

这是我没有成功的尝试:

  • Jsoup:效果不错但不支持javascript/ajax(所以它不加载整页)
  • 在HttpEntity内置的Android:js/ajax与jsoup相同的问题
  • HtmlUnit:看起来正是我需要的东西,但是几小时后无法让它在Android上工作(其他用户通过尝试加载12MB +值的jar文件而失败.我自己加载了完整的源代码并将其作为项目库引用只是为了找到它诸如Applets和java.awt(由HtmlUnit使用)之类的东西在Android中不存在.
  • 犀牛 - 我发现这非常混乱,不知道如何让它在Android中工作,即使它是我正在寻找的.
  • Selenium驱动程序:看起来它可以工作但你没有一种直接的方式以无头的方式实现它,所以你没有显示到视图的实际html.

我真的希望HtmlUnit工作,因为它似乎最适合我的解决方案.是否有任何方式或至少另一个我错过的图书馆适合我的需求?

我目前正在使用Android Studio 0.1.7,如果需要可以移动到Ellipse.

提前致谢!

java selenium android htmlunit web-scraping

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

.net相当于htmlunit?

有人知道是否有.net相当于htmlunit或类似的库?

我听说人们使用IKVM来转换htmlunit库.但我也听说转换后的代码很慢.

要求:

  • 无头浏览器
  • 支持javascript
  • 处理饼干
  • .净

.net c# htmlunit

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

如何在Java中使用HtmlUnit从下拉框中选择一个元素?

我在Java中使用HtmlUnit导航到一个网页.从那个网页我需要登录然后从那里去.我知道如何输入用户名和密码,但是有一个下拉框,我需要选择其中一个选项.如何从HtmlUnit的下拉框中选择一个选项?谢谢

java htmlunit

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

如何克服HTMLUnit ScriptException?

我遇到了一行代码,可能会触发一些js函数,但是我怎么能解决这个问题呢?

box.setText(link.toString());
client.waitForBackgroundJavaScriptStartingBefore(10000);
box.dblClick(); //this line cause the exception

Exception in thread "main" ======= EXCEPTION START ========
EcmaError: lineNumber=[0] column=[0] lineSource=[function () {] name=[ReferenceError] sourceName=[onclick event for HtmlDivision[<div class="_119 stat_elem focus_target mtm mbl _5bsm _6dh _51z6" id="u_0_k" data-location="maincolumn" onclick="Bootloader.loadComponents(&quot;ComposerXControllerBootload&quot;, emptyFunction);">] in https://www.facebook.com/?_fb_noscript=1] message=[ReferenceError: "Bootloader" is not defined.]
com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "Bootloader" is not defined.
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:684)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:616)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:591)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:985)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:210)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:230)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:804)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:738)
    at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:869)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript java htmlunit

21
推荐指数
2
解决办法
2万
查看次数

HtmlUnit的替代品

我一直在研究迄今为止可用的无头浏览器,并发现HtmlUnit被广泛使用.与HtmlUnit相比,我们有什么替代HtmlUnit可能具有优势吗?

谢谢Nayn

screen-scraping web-crawler htmlunit headless-browser

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

HTMLUnit不等待Javascript

我有一个基于GWT的页面,我想使用HtmlUnit为它创建一个HTML快照.页面使用产品上的Ajax/JavaScript信息加载,因此大约1秒钟就会出现Loading ...消息,然后会显示内容.

问题是HtmlUnit似乎没有捕获信息,我得到的只是"Loading ..."范围.

下面是一个带有HtmlUnit的实验代码,我试着给它足够的时间等待加载数据,但它似乎没有改变任何东西,我仍然无法捕获GWT javascript加载的数据.

        WebClient webClient = new WebClient();
        webClient.setJavaScriptEnabled(true);
        webClient.setThrowExceptionOnScriptError(false);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController()); 

        WebRequest request = new WebRequest(new URL("<my_url>"));
        HtmlPage page = webClient.getPage(request);

        int i = webClient.waitForBackgroundJavaScript(1000);

        while (i > 0)
        {
            i = webClient.waitForBackgroundJavaScript(1000);

            if (i == 0)
            {
                break;
            }
            synchronized (page) 
            {
                System.out.println("wait");
                page.wait(500);
            }
        }

        webClient.getAjaxController().processSynchron(page, request, false);

        System.out.println(page.asXml());
Run Code Online (Sandbox Code Playgroud)

有任何想法吗...?

java ajax gwt htmlunit

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

如何从String创建HtmlUnit HTMLPage对象?

这个问题已经问了一次,但是API我改变了,答案已经无效了.

URL url = new URL("http://www.example.com");
StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url);
HtmlPage page = HTMLParser.parseHtml(response, new TopLevelWindow("top", new WebClient()));
System.out.println(page.getTitleText());
Run Code Online (Sandbox Code Playgroud)

无法完成,因为TopLevelWindow受到保护,因为扩展/实现窗口之类的东西是荒谬的:)

有人知道怎么做吗?我觉得奇怪的是它无法轻易完成.

java htmlunit

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