dumdumpop Posted July 3, 2018 Share Posted July 3, 2018 (edited) 6 hours ago, Danp2 said: @dumdumpop A few different options here -- Use _WD_ElementAction to retrieve the text after you've located the Select element $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//select[@id=DropDown]") $sText = _WD_ElementAction($sSession, $sElement, 'text') You could also try calling _WD_FindElement twice, where you pass the result from the first call into the second one -- $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//select[@id=DropDown]") $sElements = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//option", $sElement, True) AFAIK, you should be able to use _WD_ExecuteScript to call just about any command or function that you desire. Can you provide a runnable snippet of code that demonstrates where the jQuery interaction was unsuccessful? I just got the JQuery to work! This is absolutely incredible thank you! *EDIT I did notice one thing, when I try to retrieve a value, it comes back as null. Is there a way to retrieve information from a JQuery script call? ex: using a script like $('#ElementId').height() I know I can probably get the information from the FindElement function, but just exploring possibilities right now Also both of what you sent ended up working perfectly, thank you so much! 6 hours ago, Danyfirex said: Hello. You also could do this. Local $aElements = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='DropDown']/option","",True) ;~ _ArrayDisplay($aElements) For $i=0 to UBound($aElements)-1 ConsoleWrite(_WD_ElementAction($sSession, $aElements[$i], 'text') & @CRLF) ConsoleWrite(_WD_ElementAction($sSession,$aElements[$i], 'attribute', 'value') & @CRLF) Next Saludos This was exactly what I was hoping to get out of this too, thank you so much! Edited July 3, 2018 by dumdumpop Link to comment Share on other sites More sharing options...
Danp2 Posted July 3, 2018 Author Share Posted July 3, 2018 8 hours ago, dumdumpop said: I did notice one thing, when I try to retrieve a value, it comes back as null. Is there a way to retrieve information from a JQuery script call? ex: using a script like $('#ElementId').height() Did you forget to return the value? _WD_ExecuteScript($sSession, "return $('#ElementId').height()") Danyfirex 1 Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
dumdumpop Posted July 3, 2018 Share Posted July 3, 2018 9 minutes ago, Danp2 said: Did you forget to return the value? _WD_ExecuteScript($sSession, "return $('#ElementId').height()") A bit of a face-palm moment. I didn't return it, just tested the return and works like a charm. Lol thanks again! Link to comment Share on other sites More sharing options...
Burgs Posted July 4, 2018 Share Posted July 4, 2018 (edited) Howdy, This is probably a simple question. I'm using this great UDF with FireFox. I have a 'main' window setup without any problems. My question is how can I get a 'new tab' windows opened up properly? When I attempt to do so the new tab itself opens without any problem...however I cannot get it to navigate to a URL...? Global Const $_TestType = $eFireFox Global $sDesiredCapabilities Global $iIndex Global $sSession Global $sElement $_WD_DEBUG = True Switch $_TestType Case $eFireFox SetupGecko() Case $eChrome SetupChrome() EndSwitch _WD_Startup() $sSession = _WD_CreateSession($sDesiredCapabilities) $oIE2 = _WD_Navigate($sSession, "https://www.google.com") ;;;;;ABOVE ALL WORKS FINE...I TRY TO CREATE A NEW 'TAB'... Local $_URL_TAB = _WD_NewTab($sSession, False) ;opens a new tab no problem _WD_Navigate($_URL_TAB, "http://www.nfl.com") ;new tab does not navigate anywhere...? I get an "invalid session id" error...? I was under the impression that the '_WD_NewTab' creates a handle to be used to control the navigation in the new tab...what am I not understanding here? Thanks in advance for any advice. Regards. Edited July 4, 2018 by Burgs Link to comment Share on other sites More sharing options...
Danyfirex Posted July 4, 2018 Share Posted July 4, 2018 You need to switch to the tab(window) so just set the switch parameter to true in NewTab Function. Local $hNewTabWindow = _WD_NewTab($sSession, True) ConsoleWrite($hNewTabWindow & @CRLF) _WD_Navigate($sSession, "https://www.google.com") Saludos Danysys.com AutoIt... UDFs: VirusTotal API 2.0 UDF - libZPlay UDF - Apps: Guitar Tab Tester - VirusTotal Hash Checker Examples: Text-to-Speech ISpVoice Interface - Get installed applications - Enable/Disable Network connection PrintHookProc - WINTRUST - Mute Microphone Level - Get Connected NetWorks - Create NetWork Connection ShortCut Link to comment Share on other sites More sharing options...
Danp2 Posted July 4, 2018 Author Share Posted July 4, 2018 6 hours ago, Burgs said: I was under the impression that the '_WD_NewTab' creates a handle to be used to control the navigation in the new tab...what am I not understanding here? Thanks in advance for any advice. Regards. The handle returned by _WD_NewTab is not a session ID, so it can't be used in that manner. Either change the $iSwitch parameter to True as shown above or you can manually switch to any tab like this -- _WD_Window($sSession, 'Switch', '{"handle":"' & $YOUR_TAB_HANDLE_GOES_HERE & '"}') queensoft 1 Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
slvtn666 Posted July 4, 2018 Share Posted July 4, 2018 Hello Chrome web driver closes after ruuning wd_test.au3 Win10 Home x64 Chrome 67.0.3396.99 x64 chromedriver.exe v2.40 x32 (latest) autoit 3.3.14.5 Console otput: >"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\_Projects\ltb\wd_test.au3" _WDStartup: OS: WIN_10 WIN32_NT 17134 _WDStartup: AutoIt: 3.3.14.5 _WDStartup: WD.au3: 0.1.0.10 _WDStartup: Driver: chromedriver.exe _WDStartup: Params: --log-path="C:\_Projects\at\chrome.log" _WDStartup: Port: 9515 _WD_Startup ==> General Error: Error launching web driver! __WD_Post: URL=HTTP://127.0.0.1:9515/session; $sData={"capabilities": {"alwaysMatch": {"chromeOptions": {"w3c": true }}}} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_CreateSession: 0 _WD_CreateSession ==> Webdriver Exception: HTTP status = 0 Bypass: TestTimeouts Bypass: TestNavigation Bypass: TestElements Bypass: TestScript Bypass: TestCookies Bypass: TestAlerts Running: TestFrames __WD_Post: URL=HTTP://127.0.0.1:9515/session//url; $sData={"url":"https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_frame_cols"} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_Navigate: 0 _WD_Navigate ==> Webdriver Exception: HTTP status = 0 __WD_Post: URL=HTTP://127.0.0.1:9515/session//execute/sync; $sData={"script":"return window.frames.length", "args":[[]]} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_ExecuteScript: 0 Frames=0 __WD_Post: URL=HTTP://127.0.0.1:9515/session//execute/sync; $sData={"script":"return window.top == window.self", "args":[[]]} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_ExecuteScript: 0 TopWindow= __WD_Post: URL=HTTP://127.0.0.1:9515/session//element; $sData={"using":"xpath","value":"//iframe[@id='iframeResult']"} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_FindElement: 0 _WD_FindElement ==> Send / Recv error: HTTP status = 0 __WD_Post: URL=HTTP://127.0.0.1:9515/session//frame; $sData={"id":{"element-6066-11e4-a52e-4f735466cecf":""}} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_Window: 0 __WD_Post: URL=HTTP://127.0.0.1:9515/session//execute/sync; $sData={"script":"return window.top == window.self", "args":[[]]} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_ExecuteScript: 0 TopWindow= __WD_Post: URL=HTTP://127.0.0.1:9515/session//frame/parent; $sData={} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_Window: 0 __WD_Post: URL=HTTP://127.0.0.1:9515/session//execute/sync; $sData={"script":"return window.top == window.self", "args":[[]]} __WD_Post: StatusCode=0; ResponseText=0 __WD_Post ==> Send / Recv error _WD_ExecuteScript: 0 TopWindow= __WD_Delete: URL=HTTP://127.0.0.1:9515/session/ __WD_Delete: StatusCode=0; ResponseText=0 __WD_Delete ==> Webdriver Exception _WD_DeleteSession: 0 _WD_DeleteSession ==> Webdriver Exception: HTTP status = 0 >Exit code: 0 Time: 13.46 Link to comment Share on other sites More sharing options...
slvtn666 Posted July 4, 2018 Share Posted July 4, 2018 Oh, i found the reason by myself. chromedriver.exe should be copy to script location Link to comment Share on other sites More sharing options...
Danp2 Posted July 4, 2018 Author Share Posted July 4, 2018 6 hours ago, slvtn666 said: Oh, i found the reason by myself. chromedriver.exe should be copy to script location Or correctly set it's location by calling _WD_Option with the appropriate parameters. Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
Burgs Posted July 4, 2018 Share Posted July 4, 2018 Danp2, OK great, thanks for the information...I believe I understand now...will try that later today. Regards. Link to comment Share on other sites More sharing options...
slvtn666 Posted July 5, 2018 Share Posted July 5, 2018 Danp2, Hello again! I figured out how to search for items with id, for example, entering data into the search window and pressing a button. But I still did not understand how to search for the elements as described below. How to find element by its text, for ex: Gmail Mail button. Link to comment Share on other sites More sharing options...
Danyfirex Posted July 5, 2018 Share Posted July 5, 2018 Hello @slvtn666 You can do this: local $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[contains(text(),'hereyourtext')]") Saludos Desnar 1 Danysys.com AutoIt... UDFs: VirusTotal API 2.0 UDF - libZPlay UDF - Apps: Guitar Tab Tester - VirusTotal Hash Checker Examples: Text-to-Speech ISpVoice Interface - Get installed applications - Enable/Disable Network connection PrintHookProc - WINTRUST - Mute Microphone Level - Get Connected NetWorks - Create NetWork Connection ShortCut Link to comment Share on other sites More sharing options...
slvtn666 Posted July 5, 2018 Share Posted July 5, 2018 3 minutes ago, Danyfirex said: Hello @slvtn666 You can do this: local $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[contains(text(),'hereyourtext')]") Saludos Thank you for your reply Im getting following error: __WD_Post: URL=HTTP://127.0.0.1:9515/session/aefbbec49c57a7d1e651158e92175521/element; $sData={"using":"xpath","value":"//*[contains(text(),'��)]"} __WD_Post: StatusCode=400; ResponseText=missing command parameters _WD_FindElement: missing command parameters _WD_FindElement ==> Webdriver Exception: HTTP status = 400 Link to comment Share on other sites More sharing options...
Danyfirex Posted July 5, 2018 Share Posted July 5, 2018 You need to add the last single quoted ' after the search text. Saludos Danysys.com AutoIt... UDFs: VirusTotal API 2.0 UDF - libZPlay UDF - Apps: Guitar Tab Tester - VirusTotal Hash Checker Examples: Text-to-Speech ISpVoice Interface - Get installed applications - Enable/Disable Network connection PrintHookProc - WINTRUST - Mute Microphone Level - Get Connected NetWorks - Create NetWork Connection ShortCut Link to comment Share on other sites More sharing options...
slvtn666 Posted July 5, 2018 Share Posted July 5, 2018 (edited) 23 minutes ago, Danyfirex said: You need to add the last single quoted ' after the search text. Saludos Idk... may be the trouble in cyrillic symbols? Edited July 5, 2018 by slvtn666 Link to comment Share on other sites More sharing options...
supperfake Posted July 5, 2018 Share Posted July 5, 2018 Thank for udf I have simple code here: #include "wd_core.au3" Local $url = "http://google.com/" Local $sDesiredCapabilities SetupChrome() _WD_Startup() $Session = _WD_CreateSession($sDesiredCapabilities) Sleep(2000) _WD_Navigate($Session, $url) _WD_Shutdown() Func SetupChrome() _WD_Option('Driver', 'chromedriver.exe') _WD_Option('Port', 9515) _WD_Option('DriverParams', '--log-path=' & @ScriptDir & '\chrome.log') $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"chromeOptions": {"w3c": true, "args":["start-maximized", "disable-infobars"] }}}}' EndFunc When I run this code, New profile chrome open. So I can't see account gmail and browser history. But I want keep it. How can i do this? Thank you .. Link to comment Share on other sites More sharing options...
Danp2 Posted July 5, 2018 Author Share Posted July 5, 2018 1 hour ago, supperfake said: When I run this code, New profile chrome open. So I can't see account gmail and browser history. But I want keep it. How can i do this? Thank you .. This is the default behavior, so you need to override this as discussed recently in this same thread. Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
Danp2 Posted July 5, 2018 Author Share Posted July 5, 2018 5 hours ago, slvtn666 said: Idk... may be the trouble in cyrillic symbols? Could be. Have you tried with a different browser? P.S. Please post code and resulting output as text instead of images as this makes it easier for us to view it. Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
Burgs Posted July 6, 2018 Share Posted July 6, 2018 Hello Sorry I need a clarification to my above post. I was able to create new 'tab' windows without any problem. However it seems when this is done the new 'tab' has the focus...? In my code I use the main "sSession" window to scrape some necessary data from that page's HTML...however when I create the 'tab' window I lose that functionality...it seems that my code is then trying to scrape the HTML from the 'tab' window instead of the 'main' ('sSession') window... How would I go about 'resetting' the focus back to the 'main' ('sSession') browser window again after each tab(s) are created? for example: _WD_Window($sSession, 'Switch', '{"handle":"' & $YOUR_TAB_HANDLE_GOES_HERE & '"}') ;as stated above this will 'switch' tabs ;therefore...? _WD_Window($sSession, 'Switch', '{"handle":"' & $sSession & '"}') ;would be used to 'reset' focus back to the 'main' browser window? Is that syntax correct ? I only question it because the main browser seems to call itself...? It is difficult for me to test this right now because of some Internet connectivity issues...I thank you in advance for any help. Regards. Link to comment Share on other sites More sharing options...
Danp2 Posted July 6, 2018 Author Share Posted July 6, 2018 Like I stated before, Session ID and Tab Handle are not interchangeable. You can get the current tab handle with this -- $current_tab = _WD_Window($sSession, 'Window') Once you have that, then you would use this value to switch back to this tab at any time -- _WD_Window($sSession, 'Switch', '{"handle":"' & $current_tab & '"}') Otherwise, you can use _WD_Attach to switch to a given tab. Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
Recommended Posts