Jump to content
onlineth

_IE Action not working

Recommended Posts

onlineth

Hello, I believe I have come across a bug in the _IE library. I am trying to make a script that will automatically fill's in data for a restore script for a WP site. It's called Importbuddy by IThemes and it is one of the best, if not the best, backup restore plugins for WordPress. The problem that I am having is once it is on the first step of the script, filling in the password and clicking next, it redirects me to the index.php file and when I keep trying to return to the importbuddy.php file, it keeps redirecting back to the index file. Here is the code I am using, 

_$o = _IECreate() 
_IENavigate($o, [url of ImportBuddy]) 
_IELoadWait($o, 2000)
$step0 = _IEGetObjByName($o, "password");Password feild
_IEFormElementSetValue($step0, "pass");Password of Importbuddy
$Step0submit = _IEGetObjByName($o, "submit") 
_IEAction($Step0submit, "click") 
_IELoadWait($o, 2000)
;Goes to index.html, not the next step of the importbuddy

Here is a link to the importbuddy.php file,   http://bit.ly/1H9YZNb

Please only use this file for testing, it is part of a commercial product by IThemes 

To keep this simple, just install a program like XAMPP to view the file. Also, the password is "pass"

Does anyone have any ideas why this isn't working? 

As always, Thanks for your help 

Thomas 

Edited by onlineth

online.png?theme=dark profile for Tom on Stack Exchange, a network of free, community-driven Q&A sites 

scientia potentia est

Share this post


Link to post
Share on other sites
onlineth

ok, I think I am going to take a different route on this. First I tried using the _IEFormSubmit but I keep getting an error of "2 ($_IEStatus_COMError) - COM Error in Object reference"

$o = _IECreate()
_IENavigate($o, "http://test.onlineth.x10host.com/importbuddy.php")
_IELoadWait($o, 2000)
$step0 = _IEGetObjByName($o, "password")
$form = _IEFormGetCollection($o, 0)
_IEFormElementSetValue($step0, "pass")
_IEFormSubmit($form)

So then I tried using the IE extended library but I can't get that to work either. Here is what I have for that,

$o = _IECreate()
_IENavigate($o, "http://test.onlineth.x10host.com/importbuddy.php")
_IELoadWait($o, 2000)
$step0 = _IEGetObjByName($o, "password")
$form = _IEFormGetCollection($o, 0)
_IEFormElementSetValue($step0, "pass")
$step0name = _IEGetObjByName($o, "submit")
_IEEx_JSMouseEventObjByName($o, $step0name, "mouseclick")
_IELoadWait($o, 2000)
I keep getting a "7 = No Match" error for that. I am running IE11

Also, the password for the http://test.onlineth.x10host.com/importbuddy.php is not "pass" but an extremely long string so no one will be albe to install anything malicious, it's just there so you can click on the button. If you click on it you should see this message, "Invalid password. Please enter the password you provided within BackupBuddy Settings. Attempt #."

Again, thanks for your help :)


online.png?theme=dark profile for Tom on Stack Exchange, a network of free, community-driven Q&A sites 

scientia potentia est

Share this post


Link to post
Share on other sites
onlineth

 

Appears to work if you drop _IEFormSubmit and use _IEAction instead:

;_IEFormSubmit($form)
$btnSubmit = _IEGetObjByName($o, "submit")
_IEAction($btnSubmit, 'click')

Yes, but the issue is when I use _IEAction and "click", it redirects me to the index.html page (when I use the correct password) and when I try to navigate back to the /importbuddy.php it keeps redirecting back to the index.html file. If you can, put  the importbuddy.php file,  http://bit.ly/1H9YZNb, on a server and when you use the correct password(pass), you will see what I'm talking about. 


online.png?theme=dark profile for Tom on Stack Exchange, a network of free, community-driven Q&A sites 

scientia potentia est

Share this post


Link to post
Share on other sites
onlineth

Sounds like a configuration issue.  What happens if you manually click the button? 

It goes to the next step without any problems

EDIT

That's why I was exploring the other ways to see if that would work

Edited by onlineth

online.png?theme=dark profile for Tom on Stack Exchange, a network of free, community-driven Q&A sites 

scientia potentia est

Share this post


Link to post
Share on other sites
Danp2

It goes to the next step without any problems

 

Not in my testing. Even if I manually enter the password, it initially displays the index. If I then go back and refresh the php page, it goes to the desired web page.

Share this post


Link to post
Share on other sites
onlineth

Not in my testing. Even if I manually enter the password, it initially displays the index. If I then go back and refresh the php page, it goes to the desired web page.

Hmm, again, I am using this script,

$o = _IECreate()
_IENavigate($o, "http://test.onlineth.x10host.com/importbuddy.php")
_IELoadWait($o, 2000)
$step0 = _IEGetObjByName($o, "password")
$form = _IEFormGetCollection($o, 0)
_IEFormElementSetValue($step0, "pass")
$step0name = _IEGetObjByName($o, "submit")
;_IEEx_JSMouseEventObjByName($o, $step0name, "mouseclick")
$btnSubmit = _IEGetObjByName($o, "submit")
_IEAction($btnSubmit, 'click')
_IELoadWait($o, 2000)
_IENavigate($o, "http://test.onlineth.x10host.com/importbuddy.php")

However when I use the _IENavigate it does nothing. Also, I added _IEQuit which also does nothing. What version of IE are you running? I'm only asking this because I've been reading about alternatives and it seems that the update from IE10 to 11 seems to have caused much conflict (I'm running IE11). Also, do you know why the other scripts I made don't work?

Thanks for help on this:)


online.png?theme=dark profile for Tom on Stack Exchange, a network of free, community-driven Q&A sites 

scientia potentia est

Share this post


Link to post
Share on other sites
Danp2

Sounds like you are running into the issue where an update from MS broke the IE scripting. Search the forum and you'll find the details and how to resolve it.

Share this post


Link to post
Share on other sites
onlineth

Does anyone know why the other scripts I have created don't work?

$o = _IECreate()
_IENavigate($o, "http://test.onlineth.x10host.com/importbuddy.php")
_IELoadWait($o, 2000)
$step0 = _IEGetObjByName($o, "password")
$form = _IEFormGetCollection($o, 0)
_IEFormElementSetValue($step0, "pass")
_IEFormSubmit($form) 
$o = _IECreate()
_IENavigate($o, "http://test.onlineth.x10host.com/importbuddy.php")
_IELoadWait($o, 2000)
$step0 = _IEGetObjByName($o, "password")
$form = _IEFormGetCollection($o, 0)
_IEFormElementSetValue($step0, "pass")
$step0name = _IEGetObjByName($o, "submit")
_IEEx_JSMouseEventObjByName($o, $step0name, "mouseclick")
_IELoadWait($o, 2000)
Edited by onlineth

online.png?theme=dark profile for Tom on Stack Exchange, a network of free, community-driven Q&A sites 

scientia potentia est

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

  • Similar Content

    • IAMK
      By IAMK
      If you press the "Login" button in the top-left of https://www.showroom-live.com/, it creates a popup in which you press "Login with Twitter ID", which then opens a new window with an "Authorize app" button.
      None of these 3 buttons have a Name or ID, so how do I click on them, because _IEGetObjByName / _IEGetObjByID will not work.
      Here are the sources of the 3 buttons:
      ;Login button. ;<a onclick="showLoginDialog();" href="javascript:void(0);">Login</a> ;Twitter button (Note that I am already signed into Twitter and just need to Authorize it). ;<a class="btn-twitter btn-sky-blue submit fs-b5" onclick="window.open('/social/twitter/redirect_authorize_url?login=1&from_browser=1', 'twitter', 'width=500,height=400,menubar=yes,status=yes,scrollbars=yes');" href="javascript:void(0);">Login with Twitter ID</a> ;Popup window appears. ;<input class="submit button selected" id="allow" type="submit" value="Authorize app"> I have also tried:
      Local $oLinks = _IETagNameGetCollection($ie, "a") For $oLink In $oLinks If $oLink.InnerText = "showLoginDialog()" Then _IEAction($oLink, "Click") ExitLoop EndIf Next I've even tried adding "showLoginDialog()" and "javascript:void(0)" to the end of the URL, but as expected, that wouldn't work either.
      My goal is something like this:
      #include <IE.au3> Local $ie = _IECreate("https://www.showroom-live.com/onlive") _IELoadWait($ie) Local $originalHandle = $ie ;===Functions========================================================== Func login() ;Source: <a onclick="showLoginDialog();" href="javascript:void(0);">Login</a> _IEAction(ABOVESOURCE, "Click") ;Source: <a class="btn-twitter btn-sky-blue submit fs-b5" onclick="window.open('/social/twitter/redirect_authorize_url?login=1&amp;from_browser=1', 'twitter', 'width=500,height=400,menubar=yes,status=yes,scrollbars=yes');" href="javascript:void(0);">Login with Twitter ID</a> _IEAction(ABOVESOURCE, "Click") ;New window appears for Twitter sign in, but the URL is locked. ;Source: <input class="submit button selected" id="allow" type="submit" value="Authorize app"> _IEAttach($ie, ABOVEHANDLE) ;How do I get the handle of the new window from above? _IEAction(ABOVESOURCE, "Click") _IEAttach($ie, $originalHandle) EndFunc ;====================================================================== ;===Code=============================================================== login() ;======================================================================  
      Thank you in advance.
    • Seminko
      By Seminko
      Wrote a script that grabs all of the IP addresses from Netflix's IP log, checks the IPs and returns suspicious activity.
      Everything works as it should but only when _IECreate is set to visible. When visible is set to false, it fails to login for some reason.
      Any ideas what might cause it and/or how to circumvent that?
    • nooneclose
      By nooneclose
      I need to send a string of text to this popup and click on the ok button to save it.
      Here is the code I have so far:
      ;Start IE Sleep(7000) $oIE = _IECreate("http://www.google.com") Sleep(500) _IELoadWait($oIE) $hIE = _IEPropertyGet($oIE, "hwnd") ; Get Handle of the IE window Sleep(500) WinSetState($hIE, "", @SW_MAXIMIZE) ;Wait for a browser page load to complete Sleep(3000) _IENavigate($oIE, "https://properURL.com") Sleep(8000) _IELoadWait($oIE) ;Attach to a browser control embedded in another window $oIE = _IEAttach("https://"properURL.com", url") ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $oIE = ' & $oIE & @CRLF & '>Error code: ' & @error & ' Extended code: 0x' & Hex(@extended) & @CRLF) ;### Debug Console Sleep(2000) ;Get the title of the webpage ;Local $wTitle = _IEPropertyGet($oIE, "title") ;MsgBox($MB_SYSTEMMODAL, "Webpage title:", $wTitle) ;Clicks the new button Sleep(3000) _IEAction($nWorkOrderB, "focus") _IEAction($nWorkOrderB, "click") Sleep(5000) ;Store the Element names where the important data will be sent ;Store the long description button Local $wLongDButton = _IEGetObjById($oIE, "m65d795a4-img") ;Store the long Description field id Local $wComments = _IEGetObjById($oIE, "ma6499a9c-rte_iframe") ;Store the ok button id that is in the long description Local $wCommOk = _IEGetObjById($oIE, "m74031266-pb") ;******************************************************************************* ; Send the stored data to the proper field ;******************************************************************************* ;Click the long description button Sleep(300) _IEAction($wLongDButton, "focus") _IEAction($wLongDButton, "click") Sleep(300) ;Sends the Comments Sleep(500) _IEAction($wComments, "focus") _IEAction($wComments, "click") Sleep(500) _IEFormElementSetValue($wComments, "hello darkness my old friend") ;Click the ok button Sleep(500) _IEAction($wCommOk, "focus") _IEAction($wCommOk, "click") Sleep(500)  
      Here is the popup:

    • hemichallenger
      By hemichallenger
      Hello,
      If anyone can help, it would be greatly appreciated. The code is just an example and similar to the issue with an internal webpage. I'm trying to autofill than click the submit button. I get the same error running the script.
      _IEFormElementSetValue, $_IESTATUS_InvalidObjectType
      IEGetObjById, $_IESTATUS_NoMatch
      Is it possible to edit the <textarea></textarea>  field with AutoIt?  If anyone could assist me on how. Than I could have a better understanding and chance in figuring it out on my main script. Thank you
      #include <IE.au3> Local $oIE1 = _IECreate ("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea") _IELoadWait($oIE1) local $oFormCollection = _IEFormGetCollection($oIE1,0) local $oid = _IEGetObjByid($oFormCollection, "iframeResult") _IEFormElementSetValue($oid, "test") sleep (2000) Local $oIE2 = _IECreate ("https://www.w3schools.com/html/tryit.asp?filename=tryhtml_scripts_intro") _IELoadWait($oIE2) $oForm2 = _IEFormGetCollection($oIE2,0) $oClickMe = _IEGetObjById($oForm2, "demo") _IEAction($oClickMe, "focus") _IEAction($oClickMe, "click")
    • Blueman
      By Blueman
      Hey Guys,
      Hope that you can help me with something, maybe this is a bug in the new version of AUTOIT but first i will check it with you to know for sure.
      I have made a simple GUI with a Embedded IE Object, then i would like to read the HTML with _IEBodyReadHTML(), easy right?
      When i use the old IE.au3 include from a year back or so, it is working fine!
      When i use the new IE.au3 include came with the new installation that is currently available on autoitscript.com it isnt working (i get a result that says; 0).
      Let me show you.
       
      Working Example
      #include <GUIConstantsEx.au3> #include <IE_EmbeddedVersioning.au3> #include <IE_PreVersion.au3> ;Older Version Example() Func Example() ; Create a GUI with various controls. Local $hGUI = GUICreate("Example", 1000, 1000) Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25) Global $oIE_1 = _IECreateEmbedded() ; CREATE IE OBJECT(S) GUICtrlCreateObj($oIE_1, 355, 5, 600, 360) _IENavigate($oIE_1, "https://www.google.nl", 1) Local $CheckHTML_T = _IEBodyReadHTML($oIE_1) ; Display the GUI. GUISetState(@SW_SHOW, $hGUI) MsgBox(48,"",$CheckHTML_T) ; Loop until the user exits. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $idOK ExitLoop EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc ;==>Example  
      Failing Example
      #include <GUIConstantsEx.au3> #include <IE_EmbeddedVersioning.au3> #include <IE.au3> ;New Version Example() Func Example() ; Create a GUI with various controls. Local $hGUI = GUICreate("Example", 1000, 1000) Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25) Global $oIE_1 = _IECreateEmbedded() ; CREATE IE OBJECT(S) GUICtrlCreateObj($oIE_1, 355, 5, 600, 360) _IENavigate($oIE_1, "https://www.google.nl", 1) Local $CheckHTML_T = _IEBodyReadHTML($oIE_1) ; Display the GUI. GUISetState(@SW_SHOW, $hGUI) MsgBox(48,"",$CheckHTML_T) ; Loop until the user exits. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $idOK ExitLoop EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc ;==>Example  
      I have attachted all files and i am testing on Windows 10 with the latest SciTe Program (Not compiled). 
      When i compile the script it is showing the same result.
      Thanks guys!
      IE_PreVersion.au3
      IE.au3
      IE_EmbeddedVersioning.au3
×