Clicking checkbox for website with only div class available - html

HTML Code
<div class="_2yjv">
<input type="checkbox">
VBA Code
'Click check box
Dim cbox As Object
Set cbox = ie.document.getElementsByClassName("_2yjv")(0)
cbox.Click
Hi, I have been trying to put a check on a checkbox for a couple of hours now and have tried the following:
cbox.Click
cbox.DoubleClick
cbox.Value = True
cbox.Checked = True
cbox.Value = 1
cbox.Click and cbox.DoubleClick had no errors, but is not doing anything.
The rest shows errors. It's the only checkbox from a popup window.
I've been searching this forum and others but they usually have the name value on them, and I can only find those two lines from inspect element which points to the checkbox button. Would really appreciate any help on this. I'm new and still learning VBA. Thank you.

Thank you #Zwenn, cbox.FirstChild.Click did the trick.

Related

"Clicking" anchor element to navigate to next page VBA

I'm creating an automation that will go through almost 110 pages with VBA. These pages have identical layout. I would need to go from one page to another automatically by "clicking" next button. At the very end of every page, there is a "button" (list anchor) that says "Next page". Problem is that the source code does not contain ID which would make it easy to refer with:
getElementById("id").Click
I open browser. That works fine. and I've tried something like this but it doesn't work:
Dim ieDoc As Object
Dim links As Object
Dim link As Object
Set ieDoc = ieApp.Document
Set links = ieDoc.Anchors
For Each link In links
If link.innerHTML = "innerHTML" Then
link.Click
Exit For
End If
Next link
I have tried almost everything I could find from stackoverflow but nothing worked for my needs.
THis is the source code of the "Next button" that I'm trying to click:
<li class="pager-next"><a title="Next page" href="/fi/tyosuhde- edut/kayttokohdehakupage=1&service_type=lunch&keywords=&city=&service=&service_areas=&payment_method=&municipality=&service_coupon_code=&items_per_page=50">seuraava ›</a></li>
I quess the problem is that the ClassName is in "li" and not in "a"?
Could some help me??
EDIT
Found a workaround!!:
Set pages = doc.getElementsByTagName("a")
For Each page In pages
If (page.getAttribute("title") = "Siirry seuraavalle sivulle") Then
page.Click
End If
Next page
You will need to keep reseting the html document with each refresh.
After a refresh try
ieApp.document.querySelector("a[title=""Next page""]").Click
CSS Selector
More info about CSS Selectors: CSS selectors
EDIT:
In your case the actual HTML selector is
appIE.doc.querySelector("a[title = ""Siirry seuraavalle sivulle""]").Click
Note there is no space after the "a" and you will need to leave enough time between clicks to allow the new page to load.

How do I click a button on a webpage through VBA?

I am trying to use click a button through vba but it tells me that the "Object doesn't support this property or method".
My VBA code right now is:
IE.document.getElementByType("button").getelementByClass("qm_historyTab_GoButton").Click
The HTML for the button is:
<button class="qm_historyTab_GoButton" type="submit" style="font:normal 11px tahoma,arial,helvetica,sans serif;">
<span class="qm_historyTab_GoButtonText">GO</span>
</button>
Try this:
IE.document.getElementsByTagName("button") _
.getelementsByClassName("qm_historyTab_GoButton")(0).Click
Both of the getXXX methods return a collection of items (even if there's only one match in the document) so to address a single item from the last one in order to click it you need to add the (0)
EDIT: if the aim is to submit the form then this will also work
IE.document.getElementById("qm_historyForm_7871").submit
or as there's only one button with that classname:
IE.document.getElementsByClassName("qm_historyTab_GoButton")(0).Click
Ok so I found the solution in this specific instance. The button is a submit type and sends a message using HTMLInputElement.
What I needed to do was add "Microsoft HTML Object Library" to my references and utilize those features.
I had to create the variable that would send the response:
Dim htmlInput As MSHTML.HTMLInputElement
I couldn't figure out how to refer to this specific element individually so I grabbed everything with it's class name.
For Each htmlInput In IE.document.getElementsByClassName("qm_historyTab_GoButton")
If Trim(htmlInput.Type) = "submit" Then
htmlInput.Click
Exit For
End If
Next htmlInput
Then I had the program cycle through each item in the series and send a submit response. Since this was the only one with the class name, I got lucky.
So anyways, that's how I solved the problem.

Unable to locate element for a website

Unable to inspect search label in www.walmart.com website. Any help much appreciated.
tried using css , id , etc but nothing helped. All the below code i tried but it didn't helped.
driver.findElement(By.id("global-search-input")).sendKeys("asifalikhan786#gmail.com");
driver.findElement(By.xpath("//*[#id='global-search-input']")).sendKeys("dssss");
driver.findElement(By.cssSelector("input[placeholder = 'Search']")).sendKeys("adahadha");
I looked at the page's code and noticed that By.id cannot work, because the object you want to access has no id.
I suggest you to try this:
WebElement element = driver.findElement(By.className("eader-GlobalSearch-input"));
element.clear();
element.sendKeys("your text");

Clicking a button within an IE table

I am trying to click a button within a table on a webpage within IE, the source of the button shows:
<input type="image" src="img/testimg.png" onclick="picture_return(this,'92b84574a336a090618f151b6fc821cf:5','http://testwebpage.com/in/834');" value="Test Web Button">
This is a part of a large table with multiple <td> within the source, this is within another table which is then within the following class:
<div class="section_client_dnBox">
I tried to go through a few of the items within the class by using the following VBA code:
IE.Document.getElementsByClassName("section_client_dnBox")(0).Click
However, had no luck as (0) didn't press anything and anything larger ie, (1) gave me an error. So my question now is basically, is there any way of clicking the button using something simple such as reffering to it's value within the table (value="Test Web Button")?
From my experience, you need to look at the tag name rather than the class name. This is an example of the code I generally use when finding buttons.
For Each MyHTML_Element In document.getElementsByTagName("input")
If MyHTML_Element.Type = "submit" Then
MyHTML_Element.Click: Exit For
End If
Next
You might be able to change the . type to = "image". I too am just learning how to use IE automation in VBA so I am not a champ at it either. I hope that helps.
CSS selector:
It is far simpler to use a CSS selector of input[value='Test Web Button']. No loop required.
It says get element with input tag having attribute value having value = 'Test Web Button'. "[]" means attribute.
.querySelector method of document is how you apply the selector.
CSS query:
VBA:
ie.document.querySelector("input[value='Test Web Button']").Click

VB.NET How to enter text into a website textbox without a "value" attribute

I am making a program that finds the source URL of a video from the website, www.clicktoview.org. I can download the captcha it requires, and display it, but I can't solve it with the user's input because the text box on the website doesn't have a value="" attribute.
Here is the relevant part of the HTML code:
<input type="text" id="recaptcha_response_field" name="recaptcha_response_field">
With this hindrance, is there any way I can input the user's captcha interpretation to the text field?
My code would be
WebBrowser1.Document.GetElementById("recaptcha_response_field").SetAttribute("value", TextBox2.Text)
but there isn't a value attribute.
N.B. The website is http://clicktoview.org/jbs2xyb89uai
Thanks for any help!
There isn't anything wrong with your code.
WebBrowser1.Document.GetElementById("recaptcha_response_field").SetAttribute("value",
TextBox2.Text)
should do what you want.
Even if a htmlElement doens't have a written value="" field you could still set it.
Have you checked to see that the GetElementById("recaptcha_response_field") returns a valid htmlElement?
Dim htmlElement As HtmlElement = WebBrowser1.Document.GetElementById("recaptcha_response_field")
If htmlElement IsNot Nothing Then
htmlElement.SetAttribute("value",TextBox2.Text)
End If