Jump to content

Web page automation (Fixed)


Recommended Posts

Hello, I am new to both Programming and this forum. I have done a few tiny projects that were successful and fell in love with Autoit. So now I am trying to learn new things as I go. I have read the Help docs on my following question, I have gone thru all of that. and I am sure as soon as you see my code you will be saying OMG why did he do that, or OMG how can you forget to add this.. But when your new you take the path of least resistance to get the outcome you want.

SETUP:

I am trying to make a code that will open a piece of software, then open a browser (which has a handful of tabs already open) go to a web page (one of the tabs) and search an area of the web page for a specific color, if that color is found I want it to close the browser and go back and start again. If that color is not found on that page I want it to switch tabs and search that page for the color. If the color is found on that page I want it to close the browser and start again. If the color is not found on either page, I want it to open another browser and go to website and do some things I will add once i get past this obstacle.

I already have it almost there my code will open my software, open the browser, do the searches, find or not find the color, the part I am having trouble with is the if and else and what happens if and what it does if it does not. So the first code I have does everything I want except if it finds the color on the first run it closes the browser, but then when it starts the process again it doesnt check for the color. its like it skips the scanning part and goes straight to the opening of the second browser and finishes the code.

Run( "C:\Programs\myprogram.exe", "", @SW_SHOWDEFAULT )
Sleep(4000)
MouseClick("left", 613,272) ;click in program
Sleep(500)
Example()
Func Example()
    MouseClick("left", 632,456) ;click in program
Sleep(500)
MouseClick("left", 527,456) ;click in program
Sleep(15000)
Run( "C:\Programs\browser1.exe", "", @SW_SHOWMAXIMIZED )
Sleep(Random(4000,6000))
EndFunc   ;==>Example
MouseClick("left", 162,14) ;switch tab
Sleep(Random(5000,8000))
MouseClick("left", 354,14) ;switch tab
Sleep(Random(5000,8000))
$aCoord = PixelSearch(873, 485, 900, 600, 0xDD0000, 10) ;search for color
If Not @error Then
    MouseClick("left", 1338,6) ;close browser1
Sleep(1000)
Call("Example")
Else
    MouseClick("left", 162,14) ;switch tab 
    Sleep(1000)
EndIf
MouseClick("left", 162,14) ;click tab again just to be sure its loaded
Sleep(4000)
$aCoord = PixelSearch(1052, 308, 1120, 431, 0xFF0000, 10) ;search for this color
If Not @error Then
    MouseClick("left", 1338,6) ;close browser1
Sleep(1000)
Call("Example")
Else
    Run( "C:\Programs\browser2.exe", "", @SW_SHOWMAXIMIZED )
    Sleep(2000)
EndIf
MouseClick("left", 134,45) ;click on address bar
Sleep(1000)
Send("aspecificwebpage.com") ;input website
Send("{enter}") ;hit enter
Sleep(15000)
MouseClick("left", 1338,6) ;close browser2
Sleep(500)
MouseClick("left", 1338,6) ;close browser1
Sleep(500)
MouseClick("left", 625,454) ;click in program
Sleep(500)
MouseClick("left", 634,271) ;click in program
Sleep(500)
MouseClick("left", 917,245) ;close program
Sleep(500)

SO it makes the first scan and is successful, if the color is found it closes as I want, but then when nit starts the code again it does not scan anything the second time.

and on the other side, if the color is not found naturally everything works as it is written.

I want to guess by all the weird colors in the code sniplet I have a massive amount of errors. It is like a rainbow of text up there. different from what i see in AutoIT


Any help would be appreciated.

 

Edited by Cyberjunk
Amended title
Link to comment
Share on other sites

  • Moderators

Cyberjunk,

Welcome to the AutoIt forums.

Firstly, please give your future threads meaningful titles - everyone who posts in the "General Support" section needs assistance!

Secondly, bravo for having correctly used code tags to post your code - the colours you see are the forum automatically converting the code to the standard syntax colouring used by the SciTE editor that is installed along with AutoIt. You might find it useful to download and install the full SciTE4AutoIt3 package which lets you create your own colour scheme as well as offering lots more utilities to help you code in AutoIt.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

2 minutes ago, Melba23 said:

Cyberjunk,

Welcome to the AutoIt forums.

Firstly, please give your future threads meaningful titles - everyone who posts in the "General Support" section needs assistance!

Secondly, bravo for having correctly used code tags to post your code - the colours you see are the forum automatically converting the code to the standard syntax colouring used by the SciTE editor that is installed along with AutoIt. You might find it useful to download and install the full SciTE4AutoIt3 package which lets you create your own colour scheme as well as offering lots more utilities to help you code in AutoIt.

M23

I was not sure how to title it, I will do better in the future. I dont think i can edit the title so it will have to stay the way it si for now I guess.

Actually it was just in the forum code editor, once the post was published it all matches my regular AutoIT Program. I am not worried about the colors actually. Just when I put the code in the editor here it was all so colorful and I assumed it was because of all my mistakes. Like if you put an ' in html some editors will change all text after that to the color blue or until another ' is found. notifying you some kind of argument is expected or missing.

I just downloaded the AutoIT the other day so i think it should be all updated, unless that package is an extra package for AutoIT. Customizing the colors in my SciTE is not an issue I am fine with what is provided, but if there are other thngs I may not have in that package that may be of interest in the future.

Thank you for your quick response.

Link to comment
Share on other sites

  • Moderators

Cyberjunk,

I will amend the title for you - you can do it in future by editing the OP.

The forum code editor does indeed give you some funny colours when you paste code - but it usually sorts itself out when posted.

SciTE4AutoIt3 is indeed an "extra" package - and very highly recommended by all who use it.

Finally, when you reply, please use the "Reply to this topic" button at the top of the thread or the "Reply to this topic" editor at the bottom rather than the "Quote" button - I know what I wrote and it just pads the thread unnecessarily.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Ok so I think I finally got it. It must have been pretty complicated as no one responded to the actual coding question. But for future reference since the goto command was deprecated (just WOW) it seems now you have to do 3 times the work (Mostly research to find how to replace the GOTO), and create a custom function for every action in your code. Then you write the actual program code to call every function in the exact order you need them in. Then be careful because if your functions are in the wrong place you will create a loop in your program. I would have rather had the option to use GOTO because it was needed for this specific situation. That loop took me forever to find and fix. It just kept looping the last part of my code. For every time the else was found in either option, it made a loop of just the last part.

But anyways here is how I fixed it.... Is it correct, Yep it runs! is it right Probably not, I am sure for those who look and are actually experienced, laughs will fill their rooms. but hey man, I did what i could to get it to work.

HotKeySet("{ESC}", "Terminate")
Func Terminate()
    Exit
EndFunc   ;==>Terminate
Func CloseB1()
    MouseClick("left", 1338,6) ;close browser1
    Sleep(500)
    MouseClick("left", 632,456) ;click in program
    Sleep(500)
    MouseClick("left", 527,456) ;click in program
    Sleep(15000)
EndFunc   ;==>CloseB1
Func Tab2()
    MouseClick("left", 354,14) ;switch tab
    Sleep(Random(5000,8000))
    $aCoord = PixelSearch(873, 485, 900, 600, 0xDD0000, 10) ;search for color
If Not @error Then
    Call("CloseB1")
Else
    Call("Browser2")
EndIf
EndFunc   ;==>Tab2
Func Browser2()
    Run( "C:\Programs\browser2.exe", "", @SW_SHOWMAXIMIZED )
    Sleep(2000)
    MouseClick("left", 134,45) ;click on address bar
    Sleep(1000)
    Send("aspecificwebpage.com") ;input website
    Send("{enter}") ;hit enter
    Sleep(15000)
    MouseClick("left", 1338,6) ;close browser2
    sleep(500)
    MouseClick("left", 1338,6) ;close browser1
    Sleep(500)
    MouseClick("left", 625,454) ;click in program
    Sleep(500)
    MouseClick("left", 634,271) ;click in program
    Sleep(500)
    MouseClick("left", 917,245) ;close program
    Sleep(500)
EndFunc ;==>CloseBrowser2
Run( "C:\Programs\myprogram.exe", "", @SW_SHOWDEFAULT )
Sleep(4000)
MouseClick("left", 613,272) ;click in program
Sleep(500)
MouseClick("left", 632,456) ;click in program
Sleep(500)
MouseClick("left", 527,456) ;click in program
Sleep(15000)
Call(Browser1)
Func Browser1()
Run( "C:\Programs\browser1.exe", "", @SW_SHOWMAXIMIZED )
Sleep(Random(4000,6000))
MouseClick("left", 162,14) ;switch tab
Sleep(Random(5000,8000))
MouseClick("left", 354,14) ;switch tab
Sleep(Random(5000,8000))
$aCoord = PixelSearch(873, 485, 900, 600, 0xDD0000, 10) ;search for color
If Not @error Then
    Call("CloseB1")
Else
    Call("Tab2")
EndIf
EndFunc   ;==>Browser1


Thoughts would be appreciated.
 

 

Edited by Cyberjunk
Link to comment
Share on other sites

  • 8 months later...

Hi

I think the purpose of what you are trying to do is perhaps a bit obscured by the fact that the web page is not identified.

Have you looked at the _IE automation examples in the HelpFile?

A few ideas, this is not a rewrite of your script, rather just some things to consider:

; Open browser to the AutoIt homepage, loop through the links
; on the page and click on the link with text "overview"
; using a sub-string match.

#include <IE.au3>

Local $oIE = _IECreate("http://www.autoitscript.com")

Local $sMyString = "overview"
Local $oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
    Local $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
        _IEAction($oLink, "click")
        ExitLoop
    EndIf
Next

:)

 

Skysnake

Why is the snake in the sky?

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

×
×
  • Create New...