نقل قول: بدست آوردن یک ID
نقل قول:
نوشته شده توسط
hamidrezax1
سلام وقت بخیر دوستان.معمولا شما با کد زیر میتونید چیزی رو که میخواید درون یک تکس باکس در صفحه وب قرار بدین اما مشکلی که من بهش برخوردم این هست که تکست باکس درون یک کلاس قرار گرفته و من ID اون تکس باکس رو نمیدونم و تنها چیزی که دارم اندکس و کلاس اون تکست باکس هست.چجوری میتونم ID اون تکست باکس ها رو بدست بیارم.ممنون میشم راهنمایی کنید
Me.WebBrowser1.Document.GetElementById("nam_ID").I nnerText = "TEXT"
Public Shared Function GetElementsByClass (root As HtmlElement, className As String, Optional tagName As String = Nothing) As HtmlElement()
Dim items = New List(Of HtmlElement)
If String.IsNullOrEmpty (tagName) Then
For Each item As HtmlElement In root.All
If item.GetAttribute ("className") = className Then items.Add(item)
Next
Else
For Each item As HtmlElement In root.GetElementsByTagName (tagName)
If item.GetAttribute ("className") = className Then items.Add(item)
Next
End If
Return items.ToArray()
End Function
مثلا :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim items = GetElementsByClass (Me.WebBrowser1. Document.Body, "YourClassName")
For Each item In items
item.InnerText = "TEXT"
Next
End Sub
یا اگر دنبال فقط تگ خاصی مثلا تگ های <input> هستید :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim items = GetElementsByClass (Me.WebBrowser1. Document.Body, "YourClassName", "input")
For Each item In items
item.InnerText = "TEXT"
Next
End Sub
1 ضمیمه
نقل قول: بدست آوردن یک ID
دوست عزیز ممنون از پاسخگویتون.متاسفانه من نتونستم به اون چیزی که میخوام برسم.من میخوام داخل چند تکست باکس چند متن وارد کنم و در نهایت یک کلیک رو کلیک کنم.تمام این تکست باکس ها درون یک کلاس هستش و ID ندارن.برای مثال خدمتتون همین سایت رو ارسال میکنم تا قشنگ منظورم رو برسونم. الان کلاسی که این باتن داره رو لطفا دقت کنید.من چجوری میتونم ID بدست بیارم و روش کلیک کنم
این هم کلاس مربوطه w3-button w3-bar-item w3-hover-white w3-hover-text-green
آدرس سایت
ضمیمه 153284
نقل قول: بدست آوردن یک ID
نقل قول:
نوشته شده توسط
hamidrezax1
دوست عزیز ممنون از پاسخگویتون.متاسفانه من نتونستم به اون چیزی که میخوام برسم.من میخوام داخل چند تکست باکس چند متن وارد کنم و در نهایت یک کلیک رو کلیک کنم.تمام این تکست باکس ها درون یک کلاس هستش و ID ندارن.برای مثال خدمتتون همین سایت رو ارسال میکنم تا قشنگ منظورم رو برسونم. الان کلاسی که این باتن داره رو لطفا دقت کنید.من چجوری میتونم ID بدست بیارم و روش کلیک کنم
این هم کلاس مربوطه
w3-button w3-bar-item w3-hover-white w3-hover-text-green
نمونه کد که براتون نوشتم.
Me.WebBrowser1.ScriptErrorsSuppressed = True
Me.WebBrowser1.Navigate("https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_document_getelementsby classname")
Dim items = GetElementsByClass (Me.WebBrowser1. Document.Body, "w3-button w3-bar-item w3-hover-white w3-hover-text-green", "button")
For Each item In items
item.InnerText = "Hello"
item.InvokeMember("Click")
Next
نقل قول: بدست آوردن یک ID
ممنونم دوست گرامی ببخشید که باز هم سوال میکنم آیا امکان این هست که متن تگ های پاین رو هم بتونم تغیر بدم.ممنونم از وقتی که میذارید
<div class="example">First div element with class="example".</div>
نقل قول: بدست آوردن یک ID
نقل قول:
نوشته شده توسط
hamidrezax1
ممنونم دوست گرامی ببخشید که باز هم سوال میکنم آیا امکان این هست که متن تگ های پاین رو هم بتونم تغیر بدم.ممنونم از وقتی که میذارید
<div class="example">First div element with class="example".</div>
اینجا className مقدار "example" داره و tagName مقدار "div"، یعنی GetElementsByClass (Me.WebBrowser1. Document.Body, "example", "div") و در آیتم هایی که پیدا می کنه InnerText رو تغییر می دهید.
Dim items = GetElementsByClass (Me.WebBrowser1. Document.Body, "example", "div")
For Each item In items
item.InnerText = "Your text"
Next
نقل قول: بدست آوردن یک ID
دقیقا مشکل من اینجاست که انگار این کلاس رو نمیشناسه و بدون تغیر از حلقه خارج میشه.ممنون میشم راهنمایی بفرمایید
1 ضمیمه
نقل قول: بدست آوردن یک ID
نقل قول:
نوشته شده توسط
hamidrezax1
دقیقا مشکل من اینجاست که انگار این کلاس رو نمیشناسه و بدون تغیر از حلقه خارج میشه.ممنون میشم راهنمایی بفرمایید
وقتی نمیدونم ورودی چیه طبعا مشکل خروجی رو نمیتونم تشخیص بدهم و نظری در موردش ندارم.
ضمیمه 153285
نقل قول: بدست آوردن یک ID
ممنونم بزرگوار از وقتی که برای من گذاشتین.سپاسگذارم:بوس:
نقل قول: بدست آوردن یک ID
از جی جوئری استفاده کنین با این تابع ساده و راحت
$('div.example').text('YourText');
فقط کافیه که فایل jquery.js رو در هدر صفحه ضمیمه کنید.
نقل قول: بدست آوردن یک ID
نقل قول:
نوشته شده توسط
Hossis
از جی جوئری استفاده کنین با این تابع ساده و راحت
$('div.example').text('YourText');
فقط کافیه که فایل jquery.js رو در هدر صفحه ضمیمه کنید.
حتما دقت کردین که ایشون از کنترل web browser استفاده میکنه و صفحه هم مال خودشون نیست که به header اون دسترسی داشته باشن.
روشی که شما پیشنهاد کردین نیازمند این هست که هم کد جاوااسکریپت به این صفحه تزریق بشه و هم کتابخانه jquery بهش معرفی بشه،
که البته هر دو مشابه هم هستن و باید با متد createelement انجام بشه و تا اینجا مشکلی نیست.
مشکل اینجاست که چون کنترل webbrowser روی داکیومنت مدل ie7 بنا شده، jquery به احتمال زیاد کار نخواهد کرد.
نقل قول: بدست آوردن یک ID
البته اگر بجای webbrowser از کنترل جدید webview2 ،که روی مرورگر edge بنا شده، استفاده بشه خیلی بهتره ولی اشکال این هست که کار با اون به راحتی webbrowser نیست و حتی اگر مرورگر edge هم نصب باشه باز باید این کنترل هم جداگانه نصب بشه.
نقل قول: بدست آوردن یک ID
از کجا میشه این کنترل رو نصب کرد؟؟
نقل قول: بدست آوردن یک ID
نصبش کاری نداره، کافی هست از طریق Nuget manager به پروژه تون اضافه کنین (webview2 رو جستجو کنین).
ولی تا جایی که یادمه لازم بود قبلش runtime اون رو هم نصب کنیم:
https://developer.microsoft.com/en-u...edge/webview2/
و در toolbox به کنترل دسترسی دارین.
ولی همونجور که گفتم کارکردن باهاش سخته چون به dom دسترسی ندارین (واقعا نمیدونم چرا!)
تو گیت هاب یک پروژه هست (webview2.dom) که برای کار با اون باید #C بلد باشین.