如何使用Android移动应用程序点击网页上的按钮

时间:2016-02-20 14:28:31

标签: java android

this site

我想模拟的是点击按钮" 7"使用HttpClient POST,然后使用JSoup检索计算器的输入屏幕的值,并将其设置在Android应用程序的编辑文本框中。代码运行正常,没有错误,但我得到一个空白条目。

我使用了Apache库的HttpClient。这是代码

    // Title AsyncTask
private class Title extends AsyncTask<Void, Void, Void> {
    String title, response1;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            makePostRequest();
            //postData("");
            // Connect to the web site
            Document document = Jsoup.connect(url).get();
            // Get the html document title

            title = document.title();
            Elements E1 = document.select("input[name=Input]");
            Element E2 = E1.first();
            title = E2.val();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // Set title into TextView
        EditText txttitle = (EditText) findViewById(R.id.editText);
        txttitle.setText(title);
        mProgressDialog.dismiss();
    }

    private void makePostRequest() {


        HttpClient httpClient = new DefaultHttpClient();
        // replace with your url
        HttpPost httpPost = new HttpPost(url);


        //Post Data
        List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1);

        nameValuePair.add(new BasicNameValuePair("seven",""));


        //Encoding POST data
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
        } catch (UnsupportedEncodingException e) {
            // log exception
            e.printStackTrace();
        }

        //making POST request.
        try {
            HttpResponse response = httpClient.execute(httpPost);
            // write response to log
            Log.d("Http Post Response:", response.toString());
        } catch (ClientProtocolException e) {
            // Log exception
            e.printStackTrace();
        } catch (IOException e) {
            // Log exception
            e.printStackTrace();
        }

    }


}

有谁知道我在这里做错了什么?该网站不是我的,因此我无法添加JavaScript。我是Android和Java编程的新手。

如果我能提供我可能错过的任何其他信息,请告诉我。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用浏览器监控网络。在Chrome快捷方式是 ctrl + shift + i 。选择网络选项卡,执行所需操作并查看正在发送的http请求。在您的情况下,没有请求被发送,因为该计算器纯粹在浏览器中工作并且不与服务器建立连接。这意味着你需要解释javascript。这样的工作由名为 Selenium webdriver 的库提供。它是一个无头的Web浏览器,您可以从代码中进行控制。试试吧。

编辑: Selenium在Android上不起作用。 Android内置视图,您可以使用浏览器--WebView。它可以运行javascript函数。你可以做javascript调用。 Look herehere。祝你好运