Jump to content

[SOLVED*] IE Set value in an input without a form tag


Seminko
 Share

Recommended Posts

Hey,

i would like to set a value into an INPUT field.

Checked the _IEFormElementSetValue function but that does require _IEFormGetObjByName and this is where the problem comes in. The input field I want to write to is not a part of a form tag. It is part of a table.

<input type="text" class="w2" id="nabidka_vozidel_formular_tach_od" name="nabidka_vozidel_formular_tach_od" onchange="GLOBAL.pocetInzerceNZ(&quot;nabidka_vozidel_formular&quot;,&quot;tach_od&quot;,&quot;&quot;);" autocomplete="off">

I tried this but that didn't work:

$oDownloadSamples = _IEGetObjById($oIE, "nabidka_vozidel_formular_tach_od")
_IEFormElementSetValue($oDownloadSamples, "123")

If you want to try the site I'm working with is https://www.tipcars.cz/. There is a menu on the top left hand side and if you click the "vyhledat" button the input fields will show up.

Thanks

Edited by Seminko
Link to comment
Share on other sites

1 hour ago, SmOke_N said:

Look at _IEPropertySet outertext

Error from function _IEPropertySet, $_IESTATUS_InvalidObjectType which is strange since <input type="text"

 

Strange, tried that again and no error appeared but the text wasn't written either.

Here's the code

#include <IE.au3>
#include <INet.au3>

$url = "https://www.tipcars.com/"
$oIE = _IECreate($url)
_IELoadWait($oIE)

$SearchButton = _IEGetObjById($oIE,"homepage_vyhl_frm_vyhledej")
_IEAction($SearchButton, "click")
_IELoadWait($oIE)
; INCORRECT: $oDownloadSamples = _IEGetObjById($oIE, "homepage_vyhl_frm_rok_od")
$oDownloadSamples = _IEGetObjById($oIE, "nabidka_vozidel_formular_tach_od")
_IEPropertySet($oDownloadSamples, "outertext", "123")

 

Edited by Seminko
Link to comment
Share on other sites

11 minutes ago, Danp2 said:

Are you sure that this is the correct element? When I look at the source, this appears to be a Select element, not an input element.

The code is "wrong", i used different input field. Let's stick with "nabidka_vozidel_formular_tach_od" from the original post.

#include <IE.au3>
#include <INet.au3>

$url = "https://www.tipcars.com/"
$oIE = _IECreate($url)
_IELoadWait($oIE)

$SearchButton = _IEGetObjById($oIE,"homepage_vyhl_frm_vyhledej")
_IEAction($SearchButton, "click")
_IELoadWait($oIE)
$oDownloadSamples = _IEGetObjById($oIE, "nabidka_vozidel_formular_tach_od")
_IEPropertySet($oDownloadSamples, "outertext", "123")

 

Edited by Seminko
Link to comment
Share on other sites

22 minutes ago, Seminko said:

The code is "wrong", i used different input field. Let's stick with "nabidka_vozidel_formular_tach_od":

Sorry, but that doesn't make sense to me. If you are switching target elements where the element type is different (input vs select), then why would you expect the method to update the element to remain the same?

Link to comment
Share on other sites

1 minute ago, Danp2 said:

Sorry, but that doesn't make sense to me. If you are switching target elements where the element type is different (input vs select), then why would you expect the method to update the element to remain the same?

Disregard "homepage_vyhl_frm_rok_od". That was a missclick. I copied part of my previous code where I actually wanted to control a select element.

However, "nabidka_vozidel_formular_tach_od" is not a select element or at least not that I can see. It says Input type="Text". And this is what I neet to put numbers in.

Link to comment
Share on other sites

It appears to work after adding in a Sleep command to allow the page to fully load --

#include <IE.au3>
#include <INet.au3>

$url = "https://www.tipcars.com/"
$oIE = _IECreate($url)
_IELoadWait($oIE)

$SearchButton = _IEGetObjById($oIE,"homepage_vyhl_frm_vyhledej")
_IEAction($SearchButton, "click")
_IELoadWait($oIE)

sleep(2000)

$oDownloadSamples = _IEGetObjById($oIE, "nabidka_vozidel_formular_tach_od")
_IEFormElementSetValue($oDownloadSamples, "123")

 

Link to comment
Share on other sites

14 minutes ago, Danp2 said:

It appears to work after adding in a Sleep command to allow the page to fully load --

I was just writing a comment about the possibility of the site not being properly loaded despite _IELoadWait($oIE) when you replied  :). I tried _IEFormElementSetValue right in the beginning but it didn't work so I assumed it's not the correct function.

It works now! Thanks!

I have no idea but I assume _IELoadWait($oIE) doesn't work because the site is not loading per se but a script is being started. Do we know of any other method other than _IELoadWait($oIE) that would wait for it to properly finish? I would like to avoid hardcoding a Sleep function.

 

Well this works, but the issue is that if the site changes the IDs this will loop indefinitely.

#include <IE.au3>
#include <INet.au3>

$url = "https://www.tipcars.com/"
$oIE = _IECreate($url)
_IELoadWait($oIE)

$SearchButton = _IEGetObjById($oIE,"homepage_vyhl_frm_vyhledej")
_IEAction($SearchButton, "click")
_IELoadWait($oIE)

$oDownloadSamples = _IEGetObjById($oIE, "nabidka_vozidel_formular_tach_od")
While @error
    Sleep(100)
    $oDownloadSamples = _IEGetObjById($oIE, "nabidka_vozidel_formular_tach_od")
WEnd

_IELoadWait($oDownloadSamples)

_IEFormElementSetValue($oDownloadSamples, "123")

$oDownloadSamples = _IEGetObjById($oIE, "nabidka_vozidel_formular_tach_do")
_IEFormElementSetValue($oDownloadSamples, "321")

 

Edited by Seminko
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...