Jump to content

WebDriver UDF - Help & Support (II)


Danp2
 Share

Recommended Posts

@Paulliev _WD_ElementOptionSelect has been a part of this UDF since the V0.1.0.18 release, which is from almost a year ago. Something is wrong with your configuration, but not enough details to know the root cause. Have you checked to make sure that you don't have an old copy of the UDF lying around somewhere?

Link to comment
Share on other sites

@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?

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

@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

Link to comment
Share on other sites

@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.

Link to comment
Share on other sites

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","")

 

Link to comment
Share on other sites

@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!

Link to comment
Share on other sites

  • Jos locked this topic
Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

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