Sign in to follow this  
Followers 0
jonson1986

Selection of Language from dropdown menu IE Help

7 posts in this topic

#1 ·  Posted

Hey,

I'm trying to select language from drop-down menu on a webpage by _IEGetObjById but it's  not working, It mean autoit open the page but unable to select my desired value not even by matching text or by value, I'm looking for kind help...I've pastes my Autoit codes below along with source codes(using ie) of the webpage ;

#include <IE.au3>
$site = "http://example.com/upload"
$oIE = _IECreate($site)
$oDownloadSamples = _IEGetObjById($oIE, "language")
$oDownloadSamplesSelect = _IETagNameGetCollection($oDownloadSamples, "select", "language")
$oDownloadSamplesSelect.focus
_IEFormElementOptionSelect($oDownloadSamplesSelect, "French", 1, "byText")
Sleep (1000)
_IEFormElementOptionSelect($oDownloadSamplesSelect, "2", 1, "byValue")

HTML Codes using IE:

<html>
<head>
<div class="form-row">
<div class="col-7">
<label>Language</label>
<select name="language" class="select" id="language">
<option value="1">English</option>
<option value="2">French</option>
<option value="3">German</option>
<option value="4">Italian</option>
<option value="5">Japanese</option>
<option value="6">Spanish</option>
<option value="7">Russian</option>
<option value="8">Hindi</option>
<option value="9">Arabic</option>
<option value="10">Chinese</option>
<option value="11">Dutch</option>
<option value="12">Finnish</option>
<option value="13">Korean</option>
<option value="14">Norwegian</option>
<option value="15">Portuguese</option>
<option value="16">Romanian</option>
<option value="17">Serbian</option>
<option value="18">Croatian</option>
<option value="20">Polish</option>
<option value="21">Afar</option>
<option value="22">Abkhazian</option>
<option value="23">Afrikaans</option>
<option value="24">Amharic</option>
<option value="25">Assamese</option>
<option value="26">Aymara</option>
<option value="27">Azerbaijani</option>
<option value="28">Bashkir</option>
<option value="29">Belarusian</option>
<option value="30">Bulgarian</option>
<option value="31">Bihari</option>
<option value="32">Bislama</option>
<option value="33">Bengali/Bangla</option>
<option value="34">Tibetan</option>
<option value="35">Breton</option>
<option value="36">Catalan</option>
<option value="37">Corsican</option>
<option value="38">Czech</option>
<option value="39">Welsh</option>
<option value="40">Danish</option>
<option value="41">Bhutani</option>
<option value="42">Greek</option>
<option value="43">Esperanto</option>
<option value="44">Estonian</option>
<option value="45">Basque</option>
<option value="46">Persian</option>
<option value="47">Fiji</option>
<option value="48">Faeroese</option>
<option value="49">Frisian</option>
<option value="50">Irish</option>
<option value="51">Scots/Gaelic</option>
<option value="52">Galician</option>
<option value="53">Guarani</option>
<option value="54">Gujarati</option>
<option value="55">Hausa</option>
<option value="56">Hungarian</option>
<option value="57">Armenian</option>
<option value="58">Interlingua</option>
<option value="59">Interlingue</option>
<option value="60">Inupiak</option>
<option value="61">Indonesian</option>
<option value="62">Icelandic</option>
<option value="63">Hebrew</option>
<option value="64">Yiddish</option>
<option value="65">Javanese</option>
<option value="66">Georgian</option>
<option value="67">Kazakh</option>
<option value="68">Greenlandic</option>
<option value="69">Cambodian</option>
<option value="70">Kannada</option>
<option value="71">Kashmiri</option>
<option value="72">Kurdish</option>
<option value="73">Kirghiz</option>
<option value="74">Latin</option>
<option value="75">Lingala</option>
<option value="76">Laothian</option>
<option value="77">Lithuanian</option>
<option value="78">Latvian/Lettish</option>
<option value="79">Malagasy</option>
<option value="80">Maori</option>
<option value="81">Macedonian</option>
<option value="82">Malayalam</option>
<option value="83">Mongolian</option>
<option value="84">Moldavian</option>
<option value="85">Marathi</option>
<option value="86">Malay</option>
<option value="87">Maltese</option>
<option value="88">Burmese</option>
<option value="89">Nauru</option>
<option value="90">Nepali</option>
<option value="91">Occitan</option>
<option value="92">(Afan)/Oromoor/Oriya</option>
<option value="93">Punjabi</option>
<option value="94">Pashto/Pushto</option>
<option value="95">Quechua</option>
<option value="96">Rhaeto-Romance</option>
<option value="97">Kirundi</option>
<option value="98">Kinyarwanda</option>
<option value="99">Sanskrit</option>
<option value="100">Sindhi</option>
<option value="101">Sangro</option>
<option value="102">Serbo-Croatian</option>
<option value="103">Singhalese</option>
<option value="104">Slovak</option>
<option value="105">Slovenian</option>
<option value="106">Samoan</option>
<option value="107">Shona</option>
<option value="108">Somali</option>
<option value="109">Albanian</option>
<option value="110">Siswati</option>
<option value="111">Sesotho</option>
<option value="112">Sundanese</option>
<option value="113">Swedish</option>
<option value="114">Swahili</option>
<option value="115">Tamil</option>
<option value="116">Telugu</option>
<option value="117">Tajik</option>
<option value="118">Thai</option>
<option value="119">Tigrinya</option>
<option value="120">Turkmen</option>
<option value="121">Tagalog</option>
<option value="122">Setswana</option>
<option value="123">Tonga</option>
<option value="124">Turkish</option>
<option value="125">Tsonga</option>
<option value="126">Tatar</option>
<option value="127">Twi</option>
<option value="128">Ukrainian</option>
<option value="129">Urdu</option>
<option value="130">Uzbek</option>
<option value="131">Vietnamese</option>
<option value="132">Volapuk</option>
<option value="133">Wolof</option>
<option value="134">Xhosa</option>
<option value="135">Yoruba</option>
<option value="136">Zulu</option>
<option value="19">Other</option>
</select>
</div> 
</main>
</body>
</html>

 

Share this post


Link to post
Share on other sites



#2 ·  Posted

Hi @jonson1986.

First of all, in your code you select the "select" element by id, then try to find "select" elements within it. This results in a empty HTML collection.

Also you cannot call focus/OptionSelect on a collection, even if it contained elements. You would need to use a For loop.

Finally here is your answer:

#include <IE.au3>
$site = "http://example.com/upload"
$oIE = _IECreate($site)
$oDownloadSamplesSelect = _IEGetObjById($oIE, "language")
_IEFormElementOptionSelect($oDownloadSamplesSelect, "French", 1, "byText")
_IEFormElementOptionSelect($oDownloadSamplesSelect, "2", 1, "byValue")

 

1 person likes this

Share this post


Link to post
Share on other sites

#3 ·  Posted

30 minutes ago, genius257 said:

Hi @jonson1986.

First of all, in your code you select the "select" element by id, then try to find "select" elements within it. This results in a empty HTML collection.

Also you cannot call focus/OptionSelect on a collection, even if it contained elements. You would need to use a For loop.

Finally here is your answer:

#include <IE.au3>
$site = "http://example.com/upload"
$oIE = _IECreate($site)
$oDownloadSamplesSelect = _IEGetObjById($oIE, "language")
_IEFormElementOptionSelect($oDownloadSamplesSelect, "French", 1, "byText")
_IEFormElementOptionSelect($oDownloadSamplesSelect, "2", 1, "byValue")

 

Thanks you so much.

But I've to tell you one thing, there is still some mistake in the code you shared with after implementing this code nothing happen IE not able to select French from the list and I use sleep command as well so IE can easily load the page before move further to select the option but no error but not outcome as well..

Could you please review the codes you shared and help me to make this possible. Thanks.

Share this post


Link to post
Share on other sites

#4 ·  Posted

Hmmm should work. WIth the information provided i have no issues:

#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate()
_IEBodyWriteHTML($oIE, StringRegExp(FileRead(@ScriptFullPath),"(?s)(<[h]tml>.*<\/html>)",1)[0])
$oDownloadSamplesSelect = _IEGetObjById($oIE, "language")
_IEFormElementOptionSelect($oDownloadSamplesSelect, "French", 1, "byText")
;~ _IEFormElementOptionSelect($oDownloadSamplesSelect, "2", 1, "byValue")

#cs
<html>
<head>
<div class="form-row">
<div class="col-7">
<label>Language</label>
<select name="language" class="select" id="language">
<option value="1">English</option>
<option value="2">French</option>
<option value="3">German</option>
<option value="4">Italian</option>
<option value="5">Japanese</option>
<option value="6">Spanish</option>
<option value="7">Russian</option>
<option value="8">Hindi</option>
<option value="9">Arabic</option>
<option value="10">Chinese</option>
<option value="11">Dutch</option>
<option value="12">Finnish</option>
<option value="13">Korean</option>
<option value="14">Norwegian</option>
<option value="15">Portuguese</option>
<option value="16">Romanian</option>
<option value="17">Serbian</option>
<option value="18">Croatian</option>
<option value="20">Polish</option>
<option value="21">Afar</option>
<option value="22">Abkhazian</option>
<option value="23">Afrikaans</option>
<option value="24">Amharic</option>
<option value="25">Assamese</option>
<option value="26">Aymara</option>
<option value="27">Azerbaijani</option>
<option value="28">Bashkir</option>
<option value="29">Belarusian</option>
<option value="30">Bulgarian</option>
<option value="31">Bihari</option>
<option value="32">Bislama</option>
<option value="33">Bengali/Bangla</option>
<option value="34">Tibetan</option>
<option value="35">Breton</option>
<option value="36">Catalan</option>
<option value="37">Corsican</option>
<option value="38">Czech</option>
<option value="39">Welsh</option>
<option value="40">Danish</option>
<option value="41">Bhutani</option>
<option value="42">Greek</option>
<option value="43">Esperanto</option>
<option value="44">Estonian</option>
<option value="45">Basque</option>
<option value="46">Persian</option>
<option value="47">Fiji</option>
<option value="48">Faeroese</option>
<option value="49">Frisian</option>
<option value="50">Irish</option>
<option value="51">Scots/Gaelic</option>
<option value="52">Galician</option>
<option value="53">Guarani</option>
<option value="54">Gujarati</option>
<option value="55">Hausa</option>
<option value="56">Hungarian</option>
<option value="57">Armenian</option>
<option value="58">Interlingua</option>
<option value="59">Interlingue</option>
<option value="60">Inupiak</option>
<option value="61">Indonesian</option>
<option value="62">Icelandic</option>
<option value="63">Hebrew</option>
<option value="64">Yiddish</option>
<option value="65">Javanese</option>
<option value="66">Georgian</option>
<option value="67">Kazakh</option>
<option value="68">Greenlandic</option>
<option value="69">Cambodian</option>
<option value="70">Kannada</option>
<option value="71">Kashmiri</option>
<option value="72">Kurdish</option>
<option value="73">Kirghiz</option>
<option value="74">Latin</option>
<option value="75">Lingala</option>
<option value="76">Laothian</option>
<option value="77">Lithuanian</option>
<option value="78">Latvian/Lettish</option>
<option value="79">Malagasy</option>
<option value="80">Maori</option>
<option value="81">Macedonian</option>
<option value="82">Malayalam</option>
<option value="83">Mongolian</option>
<option value="84">Moldavian</option>
<option value="85">Marathi</option>
<option value="86">Malay</option>
<option value="87">Maltese</option>
<option value="88">Burmese</option>
<option value="89">Nauru</option>
<option value="90">Nepali</option>
<option value="91">Occitan</option>
<option value="92">(Afan)/Oromoor/Oriya</option>
<option value="93">Punjabi</option>
<option value="94">Pashto/Pushto</option>
<option value="95">Quechua</option>
<option value="96">Rhaeto-Romance</option>
<option value="97">Kirundi</option>
<option value="98">Kinyarwanda</option>
<option value="99">Sanskrit</option>
<option value="100">Sindhi</option>
<option value="101">Sangro</option>
<option value="102">Serbo-Croatian</option>
<option value="103">Singhalese</option>
<option value="104">Slovak</option>
<option value="105">Slovenian</option>
<option value="106">Samoan</option>
<option value="107">Shona</option>
<option value="108">Somali</option>
<option value="109">Albanian</option>
<option value="110">Siswati</option>
<option value="111">Sesotho</option>
<option value="112">Sundanese</option>
<option value="113">Swedish</option>
<option value="114">Swahili</option>
<option value="115">Tamil</option>
<option value="116">Telugu</option>
<option value="117">Tajik</option>
<option value="118">Thai</option>
<option value="119">Tigrinya</option>
<option value="120">Turkmen</option>
<option value="121">Tagalog</option>
<option value="122">Setswana</option>
<option value="123">Tonga</option>
<option value="124">Turkish</option>
<option value="125">Tsonga</option>
<option value="126">Tatar</option>
<option value="127">Twi</option>
<option value="128">Ukrainian</option>
<option value="129">Urdu</option>
<option value="130">Uzbek</option>
<option value="131">Vietnamese</option>
<option value="132">Volapuk</option>
<option value="133">Wolof</option>
<option value="134">Xhosa</option>
<option value="135">Yoruba</option>
<option value="136">Zulu</option>
<option value="19">Other</option>
</select>
</div>
</main>
</body>
</html>
#CE

 

1 person likes this

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Hey,

Thank you so much and now it's also working for me but it's still not working on the to whom I'm trying to make it working because the website is using javascript and when I disabled javascript this code start working and when I enable the java script this code stopped working...could you please guide me how can I make this possible to work the same code under javascript type website scripts instead of on simple html only...my be javascript preventing our script not to change or select the appropriate value.

Have a great time

Edited by jonson1986

Share this post


Link to post
Share on other sites

#6 ·  Posted

jonson1986,

When you reply, please use the "Reply to this topic" button at the top of the thread or the "Reply to this topic" editor at the bottom rather than the "Quote" button - others know what they wrote and it just pads the thread unnecessarily.

M23

 


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Hmmm seems difficult without the original page to test on.

I'm guessing that some JavaScript changes some/the HTML on page load.

If the original element is still accessible after the JavaScript is done processing the DOM, the code with a modified selector will be the answer.

If not, you can:

  • modify the value with your own injected JavaScript, but that can be quite tricky.
  • trigger event(s) programmatically maybe with JavaScript if events more than the 'click' event is required.

It is annoying, but hard to avoid.

Edited by genius257

Share this post


Link to post
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
Sign in to follow this  
Followers 0

  • Similar Content

    • nassausky
      By nassausky
      Hi all,
       
      Anyone have any idea how to close all open tabs except a specific one I manually open.  Assuming I don't know what is open in all the tabs except just the one I want to keep open.
       
      I didn't want to use sendkeys and I was trying to use the following code to list the title (or url) of the 3 open tabs and  after I got that part working I would just close the other 2. This sample only displays the title of the first open tab
      #include <IE.au3> Const $ie_new_in_tab = 0x0800 $oIE = _IECreate("https://www.autoitscript.com") __IENavigate($oIE, "https://www.autoitscript.com/forum/", 1, $ie_new_in_tab) ;(obj,url,wait,param) __IENavigate($oIE, "https://www.google.com/", 1, $ie_new_in_tab) ;(obj,url,wait,param) Local $aIE[1] $aIE[0] = 0 Local $i = 1, $oIE While 1     $oIE = _IEAttach("", "instance", $i)     If @error = $_IEStatus_NoMatch Then ExitLoop     ConsoleWrite(_IEPropertyGet($oIE, "title") & @CRLF)     ReDim $aIE[$i + 1]     $aIE[$i] = $oIE ;each item holds object     $aIE[0] = $i ;first item holds count     $i += 1 WEnd MsgBox($MB_SYSTEMMODAL, "Browsers Found", "Number of browser instances in the array: " & $aIE[0]) ; This doesn't return the list of tabs in the console just the first tab  
      Thanks for any and all help
    • toto22
      By toto22
      I'm trying to click on Java Dropbox using IE. However, I'm running into problems. There is a Dropbox "Please Select" with two options "Buy" and "Sell".
      I'm able to click on a drop box (please see code below) but i'm unable to select "Buy" or "Sell"".
      Local $sMyString = "Please Select" ;############ ENTER ############# Local $oLinks = _IELinkGetCollection($oIE) For $oLink In $oLinks Local $sLinkText = _IEPropertyGet($oLink, "innerText") If StringInStr($sLinkText, $sMyString) Then _IEAction($oLink, "click") ExitLoop EndIf Next  
      Please help
       
         
    • Gowrisankar
      By Gowrisankar
      Hello everyone,
      I'm working on a task where, a PDF file is opened (in IE browser) when I click a link in a website.
      I have to read the first page of the PDF to find particular strings. Can you please share some ideas?
    • Seminko
      By Seminko
      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
    • Seminko
      By Seminko
      I am now able to populate the dropdown menus at https://www.tipcars.com/.
      The dropdowns are dynamic and do not have a Text value, only ids.
      Is there a way to get all the available options from a dropdown?
      $url = "https://www.tipcars.com/" $oIE = _IECreate($url) _IELoadWait($oIE) $oDownloadSamples = _IEGetObjById($oIE, "homepage_vyhl_frm_vozidlo") _IEFormElementOptionSelect($oDownloadSamples, "C") Above code, populates ID 'C' into the 'druh' dropdown, which results in selecting 'užitkové'. 
      Is there a way so I can grab all of the options from the dropdown menu? I could easily grab all the IDs but I am afraid they will change in the future so I would much rather match the text titles and assign the option IDs grabbed from site.
      This is what the options are according to Chrome:
      <select class="w1"id="homepage_vyhl_frm_vozidlo"name="homepage_vyhl_frm_vozidlo"onchange="try{NABIDKA_VOZIDEL_FORMULAR.naplnSelectZnacka('homepage_vyhl_frm');GLOBAL.pocetInzerceHZ('homepage_vyhl_frm','vozidlo');}catch(ex){odeslatJsChybu('formHOMEPAGE onChange 1: ' + ex.message, 'formHomePage onChange 1', -1);}"> <option value="A" style="color: black;">osobní a terénní (56 334)</option> <option value="C" style="color: black;">užitkové (4 333)</option> <option value="D" style="color: black;">nákladní (3 742)</option> <option value="E" style="color: black;">autobusy (56)</option> <option value="F" style="color: black;">obytné (373)</option> <option value="G" style="color: black;">přívěsy (1 179)</option> <option value="J" style="color: black;">motorky (780)</option> <option value="S" style="color: black;">pracovní stroje (605)</option> <option value="L" style="color: black;">ostatní (235)</option></select> Also, this cannot be grabbed by _INetGetSource.
      Thanks