2016-02-27 87 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示例)非常有效地抓取和解析內容。