2016-02-27 46 views
2

我只是为android开发应用程序。我写了一些代码,将日志记录到一个网站(使用大量的JavaScript)并抓取一些我需要的数据。我用于该HtmlUnit。现在我明白了,HtmlUnit在android上不起作用,所以我需要一个替代方案。我做了这样的事情...硒只用于测试?

final WebClient webClient = new WebClient(BrowserVersion.EDGE); 
    webClient.getOptions().setUseInsecureSSL(true); 
    webClient.getOptions().setThrowExceptionOnScriptError(false); 

    final HtmlPage loginSite = webClient.getPage("..."); 

    final HtmlForm login_form = (HtmlForm) loginSite.getElementById("login_form"); 

    final HtmlSubmitInput button = (HtmlSubmitInput) login_form.getByXPath("//input[@id='login_submit_button']").get(0); 

    final HtmlTextInput id = login_form.getInputByName("user"); 
    id.setValueAttribute("..."); 

    final HtmlPasswordInput pw = login_form.getInputByName("password"); 
    pw.setValueAttribute("..."); 

    button.click(); 

    webClient.waitForBackgroundJavaScript(2000); 

    HtmlPage worldSelectionForm = (HtmlPage) webClient.getTopLevelWindows().get(0).getEnclosedPage(); 

    final List<HtmlAnchor> anchorlist = worldSelectionForm.getAnchors(); 

    getWorld(anchorlist, 126).click(); 
    webClient.waitForBackgroundJavaScript(5000); 

    HtmlPage game = (HtmlPage) webClient.getTopLevelWindows().get(0).getEnclosedPage(); 
    System.out.print(game.asXml()); 


public static HtmlAnchor getWorld(List<HtmlAnchor> anchorlist, int world) { 
     HtmlAnchor anchor = null; 
     for (HtmlAnchor a : anchorlist) { 
      if (a.toString().contains("server_de" + String.valueOf(world))) { 
       anchor = a; 
      } 
     } 
     return anchor; 
    } 

我搜索了很多,但没有找到我的问题的答案。

我可以用硒做这个吗?硒只用于测试吗?

问候

回答

1

对于这个问题: “仅用于测试硒?” 时,Selenium site打头:

硒自动化的浏览器。就是这样!你用这种力量做什么完全取决于你。主要是为了测试目的而自动化Web应用程序,但当然不限于此。无聊的基于Web的管理任务可以(也应该)也自动化。

查看​​,取代了Android Driver

他们在Quick Start页面上有一些很好的例子。

0

与硒(webdriver的)的关键决策不是你是否正在“试验”,但是否需要交互:你是否需要模拟一个人使用真正浏览器。

如果您需要交互性,许多WebDriver实现中的一个(例如Selendroid)将成为您所需要的。

但是,如果你不这样做,如果你只是需要从网站抓取内容,只需使用HTTP库。这将更快,更有弹性,并且可以避免浏览器或设备特定的问题。他们可以处理cookies,效果登录以及HTTP背后的所有强大功能,但没有浏览器的重量,它们比交互式工具具有更大的优势。

例如,您可以使用JSoup(Android示例)非常有效地抓取和解析内容。