【问题标题】:Selenium only for testing?硒仅用于测试?
【发布时间】:2016-06-11 01:59:00
【问题描述】:

我刚刚开始为 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;
    }

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

Selenium 也可以这样做吗?硒仅用于测试吗?

问候

【问题讨论】:

    标签: java android selenium selenium-webdriver htmlunit


    【解决方案1】:

    Selenium (WebDriver) 的关键决定不是您是否在“测试”,而是您是否需要交互性:您是否需要模拟人类正在使用真正的浏览器。

    如果您需要交互性,众多 WebDriver 实现之一(例如Selendroid)将是您所需要的。

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

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

    【讨论】:

      【解决方案2】:

      对于“Selenium 仅用于测试吗?”这个问题,Selenium site 以:

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

      查看Selendroid,它取代了Android Driver

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 2015-07-06
        相关资源
        最近更新 更多