FrancescoDiMuro Posted September 29, 2017 Posted September 29, 2017 (edited) Good morning everyone I worked a bit on a little project of mine, and I managed to do what I was trying to do, or, automate a quiz in AutoIt. Now, everything works fine but, in order to achieve what I'm trying to achive, I'd like to make this script run faster. I'll attach a portion of the code in order to let you understand what my script does. expandcollapse popup$objIE_h1 = _IETagNameGetCollection($objIE, "h1") ; Take the text of the answer If @error Then ConsoleWrite("Errore durante la lettura degli h1 nella pagina. - Errore: " & @error & @CRLF) Else For $objElement In $objIE_h1 $strInnerText = $objElement.innerText Next Select Case StringInStr($strInnerText, "QUESTION") ; Here is the question ; PS4 PRO $objSpans = _IETagNameGetCollection($objIE, "span") ; Answers are stored here For $objElement In $objSpans If $i >= 4 Then $strAnswer = $objElement.innerText ; Take the text of the answer n° 0, 1, 2, 3 If StringInStr($strAnswer, "CORRECT ANSWER") Then ; If I match the correct answer, then, I have to click on the input with answer id = answer_i $j = $i - 4 $objInput = _IEGetObjById($objIE, "answer_" & $j) If @error Then ConsoleWrite("Errore durante la lettura della risposta #" & $i & " - Errore: " & @error & @CRLF) Else _IEAction($objInput, "click") If @error Then ConsoleWrite("Errore durante il click sull'elemento. - Errore: " & @error) Else ConsoleWrite($j & ") Risposta: " & $strAnswer & @CRLF) ExitLoop EndIf EndIf EndIf $i+=1 Else $i+=1 EndIf Next $i = 0 $j = 0 This is what my script does. Questions are 20, in which I have 15 multiple choice question, 2 images ( on which I use _IEImgClick() ), and 3 text inputs ( a simple send with the text I have to enter ). How can I make all of these, faster? If I reach this goal, I've probably done one of my best goals in life, and I'd like to share my happiness with you, giving a huge donation to this fantastic community! Thanks for your help Edited September 29, 2017 by FrancescoDiMuro Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Moderators JLogan3o13 Posted September 29, 2017 Moderators Posted September 29, 2017 @FrancescoDiMuro you have been around long enough to know you're not going to get a lot of help by posting a non-runnable snippet of code and then giving us a blanket "help me make this faster". If you would like help on improving the entire code, you have to post the entire code "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
FrancescoDiMuro Posted September 29, 2017 Author Posted September 29, 2017 @JLogan3o13 Hi Master Yes, you are right. I'm sorry if I can't post the entire code, because it's a project which I'd like to not share at the moment. I could ask now: "Is there a way to make a script faster, about _IE* automation?" Thanks in advance Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Moderators JLogan3o13 Posted September 29, 2017 Moderators Posted September 29, 2017 Yes "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
FrancescoDiMuro Posted September 29, 2017 Author Posted September 29, 2017 (edited) Do I have to open another thread or, can you modify the title, please? Thanks Edited September 29, 2017 by FrancescoDiMuro Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Moderators JLogan3o13 Posted September 29, 2017 Moderators Posted September 29, 2017 You can modify your own title by editing the initial post. "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
FrancescoDiMuro Posted September 29, 2017 Author Posted September 29, 2017 @JLogan3o13 Didn't know about that! Thanks again Have a good day Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
FrancescoDiMuro Posted September 30, 2017 Author Posted September 30, 2017 Bump Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Danp2 Posted September 30, 2017 Posted September 30, 2017 There are definitely ways to improve your script, but I can't say that it will be any faster. For example. $objIE_h1 = _IETagNameGetCollection($objIE, "h1") ; Take the text of the answer If @error Then ConsoleWrite("Errore durante la lettura degli h1 nella pagina. - Errore: " & @error & @CRLF) Else For $objElement In $objIE_h1 $strInnerText = $objElement.innerText Next could be rewritten as follows, assuming there is only a single H1 element $objIE_h1 = _IETagNameGetCollection($objIE, "h1", 0) ; Take the text of the answer If @error Then ConsoleWrite("Errore durante la lettura degli h1 nella pagina. - Errore: " & @error & @CRLF) Else $strInnerText = $objIE_h1.innerText EndIf Latest Webdriver UDF Release Webdriver Wiki FAQs
FrancescoDiMuro Posted September 30, 2017 Author Posted September 30, 2017 Thanks @Danp2 Other suggestions? There is a bug when the script is too fast... It selects the correct answer, but seems that the system doesn't recognize it and then, I have a bad answer ( even if it's right ). Thanks again Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Danp2 Posted September 30, 2017 Posted September 30, 2017 35 minutes ago, FrancescoDiMuro said: Other suggestions? 1. Remove "Urgent" from your topic 2. Stop making us work so hard to help you. Provide all information in one place. mLipok 1 Latest Webdriver UDF Release Webdriver Wiki FAQs
FrancescoDiMuro Posted September 30, 2017 Author Posted September 30, 2017 1 minute ago, Danp2 said: 1. Remove "Urgent" from your topic I need to make this script faster for today, so, it's urgent. 1 minute ago, Danp2 said: 2. Stop making us work so hard to help you. Provide all information in one place. I tested the script many times, and lately I had this little bug. Don't answer if you don't want to. And, by the way, your solution 1 hour ago, Danp2 said: $objIE_h1 = _IETagNameGetCollection($objIE, "h1", 0) ; Take the text of the answer If @error Then ConsoleWrite("Errore durante la lettura degli h1 nella pagina. - Errore: " & @error & @CRLF) Else $strInnerText = $objIE_h1.innerText EndIf doesn't work. Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Danp2 Posted September 30, 2017 Posted September 30, 2017 15 minutes ago, FrancescoDiMuro said: I need to make this script faster for today, so, it's urgent. 16 minutes ago, FrancescoDiMuro said: I tested the script many times, and lately I had this little bug. Don't answer if you don't want to. Fine... I won't. 20 minutes ago, FrancescoDiMuro said: And, by the way, your solution doesn't work. As I stated, it should work if there is only one H1 element. Again, you've failed to provide the necessary details. How did it fail? Latest Webdriver UDF Release Webdriver Wiki FAQs
FrancescoDiMuro Posted September 30, 2017 Author Posted September 30, 2017 Just now, Danp2 said: Really kid? 1 minute ago, Danp2 said: Fine... I won't. You've already did it. 1 minute ago, Danp2 said: As I stated, it should work if there is only one H1 element. Again, you've failed to provide the necessary details. How did it fail? I really don't know... Even if I have onlyone <h1> element in my page, it fails... Search "h1" (2 hits in 1 file) C:\Users\maybe\Downloads\IE_Automation.html (2 hits) Line 70: <h1><span class="questionid">1. </span>QUESTION</h1> Line 70: <h1><span class="questionid">1. </span>QUESTION</h1> One is the open tag <h1>, and the second one is the close tag </h1>. KTHXBYE Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Danp2 Posted September 30, 2017 Posted September 30, 2017 You've stated that it fails, but haven't told us how you determined this. Did the script not run? Was an error generated? Was the element not found? What happened?! Latest Webdriver UDF Release Webdriver Wiki FAQs
FrancescoDiMuro Posted September 30, 2017 Author Posted September 30, 2017 31 minutes ago, Danp2 said: Was an error generated? Was the element not found? The function _IETagNameGetCollection doesn't match any h1, either in 0 nor in 1 index. Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette
Danp2 Posted September 30, 2017 Posted September 30, 2017 That doesn't make any sense. If the original command returned a collection containing 1 object, then the command I posted should work. An index of 1 would mean there were multiple H1s, so it does make sense that this failed. Latest Webdriver UDF Release Webdriver Wiki FAQs
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