Jump to content

Recommended Posts

Posted

@Danp2 Thanks for your answer! I downloaded the latest version and now I can find the function! Little bit weird because I downloaded the latest version just 2 weeks ago.  I've got the following code and it gives this error:

_WD_ElementOptionSelect($sSession, $_WD_LOCATOR_ByXPath, "/select[@name='custom_field_39021']/option[contains(text(),'Normaal (hinder)')]")

Error:

[1615299113.967][INFO]: [930f6be91f2eb047259bf4b232955ac6] RESPONSE ExecuteScript ERROR javascript error: arguments[0].onchange is not a function
  (Session info: chrome=89.0.4389.82)
[1615299113.984][INFO]: [930f6be91f2eb047259bf4b232955ac6] COMMAND FindElement {
   "using": "xpath",
   "value": "/select[@name='custom_field_39021']/option[contains(text(),'Normaal (hinder)')]"

I looked at all the functions, maybe I can use _WD_ElementSelectAction aswell? What's the difference between those two?

Posted
12 minutes ago, Paulliev said:

[1615299113.967][INFO]: [930f6be91f2eb047259bf4b232955ac6] RESPONSE ExecuteScript ERROR javascript error: arguments[0].onchange is not a function
  (Session info: chrome=89.0.4389.82)

This looks like something coming from your code and completely unrelated to _WD_ElementOptionSelect. 🤔

_WD_ElementSelectAction may eventually allow you to choose one of the Select element's options, but currently it offers the following options --

  • Value - retrieve the Select element's current selection
  • Options - retrieves the value / label attributes for the Select element's options
Posted

Let me first preface my question with I am very new to Autoit.

I have tried to find information on this myself but I havent been successful so please forgive me if this information exists and I missed it.

I have put together a script that is supposed to open edge to a certain website and fill out the login form and then login. The script works if I run from SciTE  but if I compile into an exe I get the error "_WD_Startup ==> General Error: Error launching web driver!" when I run the exe. I have tried including the webdriver msedgedriver.exe with the compiled script but still get the error. If I include a copy of the webdriver exe file in the same directory it works but I would really like to compile this all together in one exe for use on other computers.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_File_Add=Path To EXE\msedgedriver.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "wd_core.au3"
#include "wd_helper.au3"


Local $sDesiredCapabilities, $sSession, $sElement, $sUNElement, $sPWElement, $sBTNElement

SetupEdge()
_WD_Startup()
Sleep(2000)
_WD_ConsoleVisible()
$sSession = _WD_CreateSession($sDesiredCapabilities)
_WD_Navigate($sSession, "https://website ")
_WD_Window($sSession, "Maximize")
$sUNElement = _WD_FindElement($sSession,$_WD_LOCATOR_ByXPath,"//input[@placeholder='Email']")
$sPWElement = _WD_FindElement($sSession,$_WD_LOCATOR_ByXPath,"//input[@placeholder='Password']")
$sBTNElement = _WD_FindElement($sSession,$_WD_LOCATOR_ByXPath,"//span[@class='progress-default']")
_WD_ElementAction ($sSession, $sUNElement, 'value',"username")
_WD_ElementAction ($sSession, $sPWElement, 'value',"password")
_WD_ElementAction ($sSession, $sBTNElement, 'click')
Func SetupEdge()

_WD_Option('Driver', 'msedgedriver.exe')
_WD_Option('Port', 9515)
_WD_Option('DriverParams', '--verbose')

$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"ms:edgeOptions": {"binary": "' & StringReplace (@ProgramFilesDir, "\", "/") & '/Microsoft/Edge/Application/msedge.exe", "excludeSwitches": [ "enable-automation"], "useAutomationExtension": false}}}}'

EndFunc

 

Posted

@Danp2

I think this is a unique problem that has not been addressed before. 

I am trying to send a date to an input, but it is not populating the input box....so I tried to manually type the date and couldn't. When the input box is clicked at calendar pops up, which is how you're supposed to enter the date. I was able to copy and ctrl+v paste the date to the input, but that doesn't seem like a streamline solution.  I even tried finding the date difference between now() and the ship date and sending left to the calendar x number of times.

$ship_date_popup_exists = _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, '//*[@id="ship_date_prompt_done"]',3000,4000)
   If $ship_date_popup_exists = 1 Then
      $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath,'//*[@id="shipDateInput"]')
      _WD_ElementAction($sSession, $sElement, 'click')
      _WD_ElementAction($sSession, $sElement, 'value', $oShip_Date_Popup_Format) ; MM/dd/yy
      
;~    $oShip_Date_Diff = _DateDiff('D', StringSplit($oShip_Date,"/")[3] & "/" & $oShip_Date_Month & "/" & $oShip_Date_Day & " 00:00:00", _NowCalc())
;~    Send("{LEFT}",$oShip_Date_Diff)

   EndIf
<div id="modal" class="reveal-modal" style="max-width: 860px; top: 70px; opacity: 1; visibility: visible; display: block;"><div id="modal-content"><div id="leaveTab" data-load-tab="">
    <fieldset style="width:100%;">

        <div class="datapoint fx_clearfix" id="city_div" style="width:40%;">
            <label for="">Ship Date</label>
            <input type="text" name="shipdate" class="required date" id="shipDateInput">
        </div>
        <div class="datapoint fx_clearfix" id="city_div" style="width:40%;">
            <label for="">Carrier Type</label>
            <select name="opco" class="required" id="opcoInput">
                <option value="">Select</option>
                <option value="Ground">Ground</option>
                <option value="Express">Express</option>
            </select>
        </div>
        <div class="buttons cf" style="margin: 10px 0;">
        <div class="purple"><button class="btn-primary leave-the-tab" id="ship_date_prompt_done">Done</button></div>
        </div>
    </fieldset>

</div>
<a class="close-reveal-modal" id="modal_close"></a>
</div></div>

Calendar section

 

<div id="calroot" style="position: absolute; top: 151px; left: 62px;"><div id="calhead"><a id="calprev"></a><div id="caltitle">March 2021</div><a id="calnext" class="caldisabled"></a></div><div id="calbody"><div id="caldays"><span>Sun</span><span>Mon</span><span>Tue</span><span>Wed</span><span>Thu</span><span>Fri</span><span>Sat</span></div><div id="calweeks"><div class="calweek"><a class="caloff" href="#28">28</a><a href="#1">1</a><a href="#2">2</a><a href="#3">3</a><a href="#4">4</a><a href="#5">5</a><a href="#6">6</a></div><div class="calweek"><a href="#7">7</a><a href="#8">8</a><a href="#9">9</a><a id="calcurrent" class="calfocus" href="#10">10</a><a class="caldisabled" href="#11">11</a><a class="caldisabled" href="#12">12</a><a class="caldisabled" href="#13">13</a></div><div class="calweek"><a class="caldisabled" href="#14">14</a><a class="caldisabled" href="#15">15</a><a class="caldisabled" href="#16">16</a><a class="caldisabled" href="#17">17</a><a class="caldisabled" href="#18">18</a><a class="caldisabled" href="#19">19</a><a class="caldisabled" href="#20">20</a></div><div class="calweek"><a class="caldisabled" href="#21">21</a><a class="caldisabled" href="#22">22</a><a class="caldisabled" href="#23">23</a><a class="caldisabled" href="#24">24</a><a class="caldisabled" href="#25">25</a><a class="caldisabled" href="#26">26</a><a class="caldisabled" href="#27">27</a></div><div class="calweek"><a class="caldisabled" href="#28">28</a><a class="caldisabled" href="#29">29</a><a class="caldisabled" href="#30">30</a><a class="caldisabled" href="#31">31</a><a class="caloff caldisabled" href="#1">1</a><a class="caloff caldisabled" href="#2">2</a><a class="caloff caldisabled" href="#3">3</a></div><div class="calweek"><a class="caloff caldisabled" href="#4">4</a><a class="caloff caldisabled" href="#5">5</a><a class="caloff caldisabled" href="#6">6</a><a class="caloff caldisabled" href="#7">7</a><a class="caloff caldisabled" href="#8">8</a><a class="caloff caldisabled" href="#9">9</a><a class="caloff caldisabled" href="#10">10</a></div></div></div></div>

 

Thanks in advance for your help

Posted

@NSearch Having the html doesn't really help in this situation. It would have been better to provide a URL so that we can examine the actual web page. However, I'm guessing that you are still dealing with the FedEx site, which uses jQuery. Examing the events attached to a date picker on that site will show that it's using the jQuery dateinput module.

You can read more about it here. I suspect that you can manually set the date using _WD_ExecuteScript, but I haven't verified that yet.

Posted

Thanks for the response @Danp2

Please see the snippet below

#include "wd_core.au3"
#include "wd_helper.au3"


_WD_Option('Driver', @ScriptDir & '\chromedriver.exe')
_WD_Option('Port', 9515)
_WD_Option('DriverParams', '--log-path="' & @ScriptDir & '\chrome.log"')

_WD_Startup()
If @error <> $_WD_ERROR_Success Then
   Exit -1
EndIf

$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true,  "args":["--disable-blink-features=AutomationControlled"]}}}}'
$sSession = _WD_CreateSession($sDesiredCapabilities)

_WD_Navigate($sSession, "https://www.fedex.com/apps/onlineclaims/?locale=en_US")
Sleep(1500)
$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath,'//*[@id="trackingNumber"]')
_WD_ElementAction($sSession, $sElement, 'value', '922897835504')
Sleep(3000)
_WD_ElementOptionSelect($sSession, $_WD_LOCATOR_ByXPath, "//div/select/option[@value='LC']")
sleep(3000)
$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//button[@id='tracking_nbr_cont_btn']")
_WD_ElementAction($sSession, $sElement, 'click')

MsgBox(0,"Stop","")

 

Posted

Thanks @Danp2 - I have been trying to make sense of the page....no luck yet.

_WD_ExecuteScript($sSession, "$('#shipDateInput').dateinput('setDate', '09/20/20');")

 

Am I on the right path?

Posted

@Danp2 same problem with me -- I thought logging in may change the result, but I am not able to send the date to the input box. I will continue to try different variations of the date, but if you have any other ideas, please let me know. Thank you very much for your help!

Posted

@Danp2 This is a tough one -- no luck with the code above or with

_WD_ExecuteScript($sSession, "$('#shipDateInput').data('dateinput').setDate(21, 01, 28);")

 

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...