I want to know how to put text to a website's textbox with VB.NET.
Like when you complete a textbox and press enter.
Something like this:
Dim web as webbrowser
web.document.textbox(1).insert("text")
it would look something like this:
WebBrowser1.Document.GetElementById("login_password").SetAttribute("value", TextBox2.Text)
As giuseppe has suggested, you need to search for the element in the document and then set it's value property. for example following code logins into website by setting its userId and password textboxes and clicking the submit button.
Dim htmlDoc=WebBrowser1.Document
Dim elem_Input_UsrName As HtmlElement = htmlDoc.GetElementById("username")
Dim elem_Input_PssWrd As HtmlElement = htmlDoc.GetElementById("password")
Dim elem_Input_Submit As HtmlElement = getElementByClassName("Submit", "Input", htmlDoc)
If elem_Input_UsrName IsNot Nothing AndAlso elem_Input_PssWrd IsNot Nothing Then
elem_Input_UsrName.SetAttribute("value", "xyz#ABC.com")
elem_Input_PssWrd.SetAttribute("value", "yourpassoword")
elem_Input_Submit.InvokeMember("click")
End If
This will help 100%:
webbrowser1.document.getElementById("yourtextboxidinwebsite").innertext = textbox1.text
I get a way that if u want to receive from the website itself another way I need to receive results from the website into the text box. U can use this method.
first, make a web browser to load the page
WebBrowser1.Navigate("https://tools.keycdn.com/geo")
then this
TextBox1.Text = WebBrowser1.Document.GetElementById("geoResult").InnerText
Related
I'm trying to make it so I can have several text boxes in my form show pieces of information from a specific webpage. For example, would there be a way I would be able to retrieve the title of this question to a variable with the click of a button in Visual Basic?
It not hard but you have to look at the source page, and identify the elements.
In nicely formed pages, usually the div elements have a tag ID, but often they don't, so you have to grab say by a attribute name - often you can use the class name of the div in question.
So, to grab the Title, and you question text of this post?
This works:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim xDoc As New Xml.XmlDocument
Dim strURL As String = "https://stackoverflow.com/questions/55753982"
Dim xWeb As New WebBrowser
xWeb.ScriptErrorsSuppressed = True
xWeb.Navigate(strURL)
Do Until xWeb.ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
Loop
Dim HDoc As HtmlDocument = xWeb.Document
Debug.Print(HDoc.GetElementById("question-header").FirstChild.InnerText)
Debug.Print(FindClass(HDoc, "post-text"))
End Sub
Function FindClass(Hdoc As HtmlDocument, strClass As String) As String
' get all Divs, and search by class name
Dim OneElement As HtmlElement
For Each OneElement In Hdoc.GetElementsByTagName("div")
If OneElement.GetAttribute("classname") = strClass Then
Return OneElement.InnerText
End If
Next
' we get here, not found, so return a empty stirng
Return "not found"
End Function
OutPut:
(first part is title question)
Is there a way to retrieve some text from a webpage to a textbox in VB?
(second part is question text)
I'm trying to make it so I can have several text boxes in my form show pieces of
information from a specific webpage. For example, would there be a way I would be
able to retrieve the title of this question to a variable with the click of a button
in Visual Basic?
I trying to do a program in vb.net that will search a video on youtube by words and play the first url (the first result) that I will get without waiting to client to choose.
Someone can help me?
I did the search but I dont know how to do that it will play the first video that I will get automatically.
What form you choose to develop this program ? Webform ? Winform?
I assume that the form is winform, then you could use the "WebBrowser" (you can find the "WebBrowser" in the toolbox)
Private Sub openYouTube()
WebBrowser1.Navigate("https://www.youtube.com/?gl=TW")
End Sub
Find the search bar on the youtube (use GetElementByID) and insert the string which you want to search (Use SetAttribute). The ID of the inputbox of youtube search bar is "search" (How to find the ID of any element in a webpage? Target the element and click the right button of mouse, choose "inspect" for Chrome, "inspect element" for IE, it would show the element detail)
Private Sub inputString&SearchIt()
Dim theStringYouWantToSearch as string
WebBrowser1.Document.GetElementById("search").SetAttribute("value", theStringYouWantToSearch)
End Sub
Execute the search (Use InvokeMember("click") to fire the search)
Private Sub executeSearch()
WebBrowser1.Document.GetElementById("search-icon-legacy").InvokeMember("click")
End Sub
Find the first result and record the URL.
This process is more complicated, use GetElementsByTagName to get a collection of result tables, the first result is the first item of this collection. Find the table of first result then loop through all elements of this table, to find the element which id is "thumbnail", and this element has the information of part of URL.
Private Sub findFirstResult()
Dim elemCollection as HtmlElementCollection
Dim firstResultTable as HtmlElement
Dim hrefString as string
Dim resultURL as string
elemcollection = WebBrowser1.Document.GetElementsByTagName("ytd-video-renderer")
firstResultTable = elemCollection.item(0)
For each element as HtmlElement in firstResultTable.All
If element.Id = "thumbnail" then
hrefString = element.GetAttribute("href")
End if
Next
resultURL = "https://www.youtube.com" & hrefString
End Sub
Between every step, you have to wait for the complement of webpage loading, or the program wouldn't find the element. There are several ways to do that, you could do some search for that.
Is there a way to get the selected text or highlighted text only from the Active Control? Active Control doesn't have .SelectedText option, so I used .Text
Example in the image.
I only highlighted "Rus" from the EnhacedTextBox.
ActiveControl.Text contains "Russia".
How do I get the SelectedText "Rus" to be set in Clipboard.SetDataObject() for copying?
Thanks a lot for your opinions and suggestions.
Do you mean you want to get selected text of a textbox ? If so,you can use TextBox.SelectedText property.
I am not sure if you are looking for this but if no, then i assume you are generating multiple textboxes from code behind/during design time ? If so, then try the following code to get the active textbox :
Private Sub GetTheText()
If Me.ActiveControl.[GetType]() = GetType(TextBox) Then
Dim textBox As TextBox = CType(Me.ActiveControl, TextBox)
Dim mytext = textbox.SelectedText
End If
End Sub
Hope this helps you
m_strGetText = Me.m_udtNavigationController.TemplateKeyAss.PrimaryTask.ActiveControl.Text.ToString()
Dim trial As EnhancedTextBox = TryCast(Me.m_udtNavigationController.TemplateKeyAss.PrimaryTask.ActiveControl, EnhancedTextBox)
Dim trial2 As String = trial.SelectedText().ToString()
Solution from #jmcilhinney.
trial2 now contains the Rus selected text. Thanks.
I have the following input, I want to get it value using vb.net WebBrowser, and then put it into a variable how can i perform that?
<input type="hidden" name="loginurl" value="https://example.com?ctoken=KWYZlCrYxt">
I'm trying to use this code, but i don't know how to put the value i got into a variable:
For Each Element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("input")
'Depending on how the source code is formatted on the tag, you may also try Element.OuterHTML, Element.InnerText and Element.OuterText in the line below
If Element.OuterHtml.Contains("name=""loginurl""") Then
Element.GetAttribute("value")
Dim login = value
WebBrowser1.Navigate(login)
Exit For
End If
Drag and drop webbrowser control and use the following snippet
WebBrowser1.Navigate("https://example.com?ctoken=KWYZlCrYxt")
Here is a good reference
Hope this is useful
I'd say just assign a variable with Dim attributeValue = Element.GetAttribute("value")... am I missing something obvious here?
For Each Element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("input")
'Depending on how the source code is formatted on the tag, you may also try Element.OuterHTML, Element.InnerText and Element.OuterText in the line below
If Element.OuterHtml.Contains("name=""loginurl""") Then
Dim attributeValue = Element.GetAttribute("value")
Dim login = value
WebBrowser1.Navigate(login)
Exit For
End If
Try:
Dim AllElementes As HtmlElementCollection = WebBrowser1.Document.All
For Each webpageelement As HtmlElement In AllElementes
If webpageelement.GetAttribute("name") = "loginurl" Then
Dim login = webpageelement.GetAttribute("value")
WebBrowser1.Navigate(login)
End If
Next
should work.
I need to get some text from this web page. I want to use the trade feed for my program to analyse the sentiment of the markets.
I used the browser control and the get element command but its not working. The problem is that whenever my browser starts to open the page I get Java scripts errors.
I tried with DOM but seems that i dont quite understand what i need to do :)
Here is the code:
Dim code As String
Using client As New WebClient
code = client.DownloadString("http://openbook.etoro.com/ahanit/#/profile/Trades/")
End Using
Dim htmlDocument As IHTMLDocument2 = New HTMLDocument(code)
htmlDocument.write(htmlDocument)
Dim allElements As IHTMLElementCollection = htmlDocument.body.all
Dim allid As IHTMLElementCollection = allElements.tags("id")
Dim element As IHTMLElement
For Each element In allid
element.title = element.innerText
MsgBox(element.innerText)
Next
Update: So I tried the HTML Agility pack, as suggested in the comments, and I am stuck again on this code
Dim plain As String = String.Empty
Dim htmldoc As New HtmlAgilityPack.HtmlDocument
htmldoc.LoadHtml("http://openbook.etoro.com/ahanit/#/profile/Trades/")
Dim goodnods As HtmlAgilityPack.HtmlNodeCollection = htmldoc.DocumentNode.SelectNodes("THE PROBLEM")
For Each node In goodnods
TextBox1.Text = htmldoc.DocumentNode.InnerText
Next
Any advice what to now?
Ok I think I know what the problem is somehow the div that I need is hidden and its not loaded when I load the web page just the source code. Does someone knows how to load all the hidden divs ??
Here is my new code
Dim doc As New HtmlAgilityPack.HtmlDocument
Dim web As New HtmlWeb
doc = web.Load("http://openbook.etoro.com/ahanit/#/profile/Trades/")
Dim nodes As HtmlNode = doc.GetElementbyId("feed-items")
Dim id As String = nodes.WriteTo()
TextBox1.Text = TextBox1.Text & vbCrLf & id
user1336635,
Welcome to SO! Something you might try is to check out his source code, figure out what javascript function is populating the field you want (using firebug - I assume it's the one that "trades result in profit" next to it), and then embedding that script into a web page that your webbrowser control loads. That's where I'd try to start. I checked his source code and searched for "trades result in profit" and didn't find anything which leads me to believe hunting for the element 'might' not be possible. Just a starting place until someone with more experience with this chimes in!! Best!
-sf