چگونه همچین برنامه ایی را بسازم؟(تغییر سورس کد های Html)
سلام دوستان
من قصد دارم برنامه ای رو بسازم که به این ادرس بره<
http://10.8.206.66:8081/
و یوزنیم و پسور رو وارد کنه < و مقدار درون
<span id="ctl00_ContentPlaceHolder1_lblRemainCredit">25GB 453MB </span>
که برابر 25GB 453MB هست رو بخونه < و درون برنامه نمایش داده بشه <
ما بقی موارد هم هست < که اگه این مورد جواب بده < الباقی هم به نتیجه می رسه <




برای اینکه بهتر منظورم رو متوجه بشید <
کد های زیر رو با پسوند .vbs ذخیره و اجرا کنید < بجای USERNAME , PASSWORD هم اطلاعات اکانت خودتون رو بزارید <
میبینید که وارد سایت انکو کودر میشید <
Set objExplorer = WScript.CreateObject("InternetExplorer.Application")
objExplorer.Navigate "http://uncocoder.com/%D9%88%D8%B1%D9%88%D8%AF"
objExplorer.Visible = 1
objExplorer.ToolBar = 1
objExplorer.StatusBar = 1
objExplorer.Width=900
objExplorer.Height = 700
objExplorer.Left = 0
objExplorer.Top = 0
Do While (objExplorer.Busy)
Wscript.Sleep 200
Loop
Set Helem = objExplorer.document.getElementByID("username")
Helem.Value = "USERNAME" ' change this to yours
Set Helem = objExplorer.document.getElementByID("password")
Helem.Value = "PASSWORD" ' change this to yours
Set Helem = objExplorer.document.Forms(0)
Helem.Submit
حالا من عین همین کد رو برای java میخوام ! البته اگر خروجی هم نشون بده که خیلی خوب میشه <

توسط این متد میتونید مقدار یه تگ رو بگیرید ولی اینکه چطوری میشه مقدار داد رو نمیدونم.
HttpClient client = new DefaultHttpClient();
HttpGet method = new HttpGet(www.test.com);//لینک سایت مربوطه
HttpResponse response = client.execute(method);
InputStream stream = response.getEntity().getContent();
String result = inputestreamToString(stream);
Document doc = Jsoup.parse(result);
Elements mElements = doc.select("span[id^=ctl00_ContentPlaceHolder1_lblRemainCredit]");
Result = mElements.get(0).text();
private static String inputestreamToString(InputStream inputStream)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();
String line;
try
{
while ((line = reader.readLine()) != null)
{
builder.append(line);
}
return builder.toString();
}
catch (Exception e)
{
e.printStackTrace();
}
return "";
}

من جواب اینکه چطور یک مقدار رو در فیلد های HTML وارد کنبم رو پیدا کردم < لینک
اما چطور میتونم مقدار درون یک المنت رو بخونم ؟
از این کد استفاده میکنم < که نیازی به لایبری نداره <
mWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");
mWebview.loadUrl("http://www.cloob.com");
mWebview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
mWebview.loadUrl("javascript:window.HtmlViewer.showHTML" +
"(document.getElementsByTagName('html')[0].innerHTML);");
}
});
class MyJavaScriptInterface {
private Context ctx;
MyJavaScriptInterface(Context ctx) {
this.ctx = ctx;
}
public void showHTML(String html) {
new AlertDialog.Builder(ctx).setTitle("HTML").setMessage(html)
.setPositiveButton(android.R.string.ok, null).setCancelable(false).create().show();
}
}
که تمام کد های html رو بهم میده
میخوام مقدار درون یک btn رو از روی html دریافت کنم < اما ممکن نیست !
mWebview.loadUrl("javascript:window.HtmlViewer.showHTML" +
"(document.getElementsByClassName('btn')[0].innerHTML);");
از کد بالا که استفاده میکنم مقدار خالی بهم میده
mWebview.loadUrl("javascript:window.HtmlViewer.showHTML" +
"(document.getElementsByClassName('btn')[0].value.innerHTML);");
و از این کد هم که استفاده میکنم میگه Undefined !
مشکل از چیه ؟
دقیقا باید چی رو وارد کنم ؟ ممنون میشم راهنمایی کنید <

خب با استفاده از این کد تونستم تا جایی که ممکنه به چیزی که میخوام نزدیک بشم<
هم چنان یک استرینگ خالص رو بیرون نمیده <
mWebview.loadUrl("javascript:window.HtmlViewer.showHTML" +
"(document.getElementsByClassName('loginAuth_formSubmit clearfix')[0].innerHTML);");
}
چیز دیگه ایی هم که متوجه شدم < این هست که فقط اسم کلاس هایی که در قسمت DIV تعریف شده اند رو میتونم جای گذاری کنم !

از این کد هم که استفاده می کنم باز هم میگه undefined !
"(document.getElementsByClassName('loginAuth_formSubmit clearfix')[0].getElementsByTagName('btnSubmit').innerHTML);");
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .