dvlkn Posted July 6, 2008 Posted July 6, 2008 (edited) Hello I just recently wrote a script for auto login for myself and improved it thanks to the help I got on this forum. But I have now encountered yet another problem that I've been trying to solve for a while. I need to click a link : I tried using _IELinkClickByIndex or _IELinkClickByText but it always return as "No match". Then I figured that the link is in a frame (or iframe) which might be the reason why it was not detected. So how can I do this ? the frame is on left, like a menu. I cannot unfortunately show the page because one need to login :/ Edited July 6, 2008 by dvlkn
TomZ Posted July 6, 2008 Posted July 6, 2008 You should use _IEFrameGetObjByName to solve your problem.
dvlkn Posted July 6, 2008 Author Posted July 6, 2008 Should it be : $oFrame = _IEFrameGetObjByName ($oIE, "menu") followed by the code for _IELinkClickByText ? Because in that case it did not work for me. I don't really understand the function of _IEFrameGetObjByName as well despite the help file.
TomZ Posted July 6, 2008 Posted July 6, 2008 _IELinkClickByText ( ByRef $o_object, $s_linkText [, $i_index = 0], $f_wait = 1]] ) Normally $o_object is $oIE or similar, but in this case it should be $oFrame instead.
dvlkn Posted July 6, 2008 Author Posted July 6, 2008 (edited) Aah I just looked at the output and it's the _IEFrameGetObjByName that does not find a match now. Although I did put the name "menu" correctly... I don't know whats wrong muttley Edited July 6, 2008 by dvlkn
dvlkn Posted July 6, 2008 Author Posted July 6, 2008 (edited) <html><head><title>Star Kingdoms -- Menu</title></head><body bgcolor="#222222" text="#FFFFFF" link="#447CFF" vlink="#447CFF" alink="#4E9F5F" background="/images/menu-bg.gif"><STYLE type="text/css"><!--A:link {text-decoration: none; color: #447CFF; }A:visited {text-decoration: none; color: #447CFF;}A:hover { text-decoration: underline; color: #4E9F5F;}body { font-size: 9; font-family: Verdana;}table { font-size: 9; font-family: Verdana;}--></STYLE><center><img src="/images/title.gif" alt="" vspace=10 hspace=0 width=80 height=35><br><a href="rightframe.php?s=7228" target="skmain">Menu</a><br><a href="status.php?s=7228" target="skmain">Status</a><br><br><a href="viewsector.php?s=7228&mysector=1" target="skmain">Your Sector</a><br><a href="viewsector.php?s=7228" target="skmain">View Sector</a><br><a href="explore.php?s=7228" target="skmain">Explore</a><br><a href="buildings.php?s=7228" target="skmain">Buildings</a><br><a href="research.php?s=7228" target="skmain">Research</a><br><a href="military.php?s=7228" target="skmain">Military</a><br><br><a href="probes.php?s=7228" target="skmain">Probe Room</a><br><a href="attack.php?s=7228" target="skmain">Attack Room</a><br><a href="missile.php?s=7228" target="skmain">Missile Room</a><br><br><a href="alliances.php?s=7228" target="skmain">Alliances</a><br><a href="politics.php?s=7228" target="skmain">Sector Politics</a><br><a href="forums.php?s=7228" target="skmain">Sector Forums</a><br><a href="alliance-forums.php?s=7228" target="skmain">Alliance Forums</a><br><a href="http://forums.starkingdoms.com/viewforum.php?f=11" target="skmain">Public Forums</a><br><a href="sendmessages.php?s=7228" target="skmain">Messages</a><br><a href="sendaid.php?s=7228" target="skmain">Send Aid</a><br><br><a href="scores.php?s=7228" target="skmain">Scores</a><br><a href="news.php?s=7228" target="skmain">Sector News</a><br><a href="uninews.php?s=7228" target="skmain">Universal News</a><br><a href="alliancenews.php?s=7228" target="skmain">Alliance News</a><br><br><a href="shield.php?s=7228" target="skmain">Shields</a><br><a href="pref.php?s=7228" target="skmain">Preferences</a><br><a href="rewards.php?s=7228" target="skmain">Rewards</a><br><br><a href="logout.php?s=7228" target="_top">Logout</a><br><br></center><! -- Copyright BSG Online Games �2001-2005. All rights reserved --></body></html> Edited July 6, 2008 by dvlkn
TomZ Posted July 6, 2008 Posted July 6, 2008 No, I wasn't intrested in the contents of the frame, I was intrested in the actual frame tag, like so: <iframe blablabla></iframe>
dvlkn Posted July 6, 2008 Author Posted July 6, 2008 (edited) Oh my bad, here it is :<html><head><title>Star Kingdoms</title><META HTTP-EQUIV="Pragma" CONTENT="no-cache"><script type="text/javascript">//<!--function setframe(rows) { var fs = document.getElementById('skright'); fs.rows = rows; }//--></script></head><frameset style="background-color: #000000;" cols="100,*" border=0 FRAMEBORDER=0> <frame name="menu" src="/scripts/menu.php?s=8673" scrolling=true marginheight=0 marginwidth=0> <frameset style="background-color: #000000;" rows="*,20" border=0 FRAMEBORDER=0 id="skright" > <frame name="skmain" src="/scripts/rightframe.php?login=true&s=1414&lastip=RZN1hQMZ27K9a%2Bsl%2BO%2BXWQ%3D%3D&lastdate=bfUImBEQwgZO4JC3D5nRjV%2BTGCUFN%2Btm" scrolling=true marginheight=0 marginwidth=0> <frame name="chatbox" src="/scripts/chat.php?s=6280&o=1" scrolling="no"> </frameset></frameset></html>The frame name is "menu" isnt it ? Edited July 6, 2008 by dvlkn
dvlkn Posted July 6, 2008 Author Posted July 6, 2008 Basically, the code looks like this: #include <IE.au3> $oIE = _IECreate("http://starkingdoms.com/") $oForm = _IEFormGetCollection ($oIE, 0) $oAccount = _IEFormElementGetCollection ($oForm, 0) $oPass = _IEFormElementGetCollection ($oForm, 1) _IEFormElementSetValue ($oAccount,"User") _IEFormElementSetValue ($oPass,"Pass") _IEFormSubmit ($oForm,0) _IELoadWait($oIE) _IELinkClickByText ($oIE, "Terra Nova") _IELoadWait($oIE) ;that's where autoIT stops $oFrame = _IEFrameGetObjByName ($oIE, "menu") _IEFrameGetObjByName ($oFrame, "Military")
TerarinKerowyn Posted July 6, 2008 Posted July 6, 2008 (edited) #RequireAdmin #include <IE.au3> $oIE = _IECreate("http://www.starkingdoms.com/login/") WinSetState($oIE, "", @SW_MAXIMIZE) _IELoadWaitTimeout(5000) $oForm = _IEFormGetCollection($oIE, 0) $oAccount = _IEFormElementGetCollection($oForm, 0) $oPass = _IEFormElementGetCollection($oForm, 1) _IEFormElementSetValue($oAccount, "Username") _IEFormElementSetValue($oPass, "Password") _IEFormSubmit($oForm, 0) _IELoadWait($oIE) $oElements = _IELinkGetCollection($oIE) For $oElement In $oElements If StringInStr($oElement.innertext, "Terra Nova") Then _IEAction($oElement, "click") _IELoadWait($oIE) EndIf Next $oFrame = _IEFrameGetObjByName ($oIE, "menu") _IELinkClickByText ($oFrame, "Menu") _IELoadWait($oIE) Here it is then Edited July 6, 2008 by TerarinKerowyn Contact via MSN: [email=terarink_msn@hotmail.com]terarink_msn@hotmail.com[/email], yahoo: terarink_yah
dvlkn Posted July 7, 2008 Author Posted July 7, 2008 (edited) Eww I discovered a horrible mistake in my code I got it working now, thanks a bunch EDIT: I'll post back here if I encounter any further problems muttley Edited July 7, 2008 by dvlkn
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now