Jump to content

MONaH-Rasta

Members
  • Posts

    13
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

MONaH-Rasta's Achievements

Seeker

Seeker (1/7)

1

Reputation

  1. I'm using traymenu for 3 main purposes: Set script options (Like on/off logging, notifications, etc.) Pause the script Exit script. So I don't need no TrayGetMsg() nor TrayOnEven't mode. I just never need my script to react immediately on tray item state changes. If this "bug" with behaviour of traymenu with standard menu on is "ok" for developers of autoit, then I will just use 4 empty items and that's it 😎
  2. So... After some research and bunch of tests I finally have a solution to get rid of this annoying popup. I'm using chrome version 74.0.3729.169 (current) latest stable. Here is a code of function that will do the trick. $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true, "args":["start-maximized", "disable-infobars", "--user-data-dir=' & StringReplace(@ScriptDir, Chr(92), Chr(92) & Chr(92)) & '\\Profile 1"] }}}}' _SetPreferences() _WD_Startup() Func _SetPreferences() Local $sFileName, $sFind, $sReplace, $iRetval $sFileName = @ScriptDir & Chr(92) & 'Profile 1' & Chr(92) & 'Local State' $sFind = '"exited_cleanly":false' $sReplace = '"exited_cleanly":true' $iRetval = _ReplaceStringInFile($sFileName, $sFind, $sReplace) If $iRetval = -1 Then If TrayItemGetState($iShowNotify) = 65 Then _TrayTip('File ' & Chr(92) & 'Local State' & Chr(92) & ' was not edited! Error = ' & @error) EndIf $sFileName = @ScriptDir & Chr(92) & 'Profile 1' & Chr(92) & 'Default' & Chr(92) & 'Preferences' $sFind = '"exit_type":"Crashed"' $sReplace = '"exit_type":"None"' $iRetval = _ReplaceStringInFile($sFileName, $sFind, $sReplace) If $iRetval = -1 Then If TrayItemGetState($iShowNotify) = 65 Then _TrayTip('File ' & Chr(92) & 'Local State' & Chr(92) & ' was not edited! Error = ' & @error) EndIf EndFunc If you will have those 2 options set like this before start new session, chrome will start normally regardless of was he actually crashed or not. For some reason in most cases webdriver causing chrome set those 2 options to values like after "crash", and of course my solution is not "correct", but at least I have no popups now 😎
  3. To stay logged in after first time logged in I'm saving a local profile for the future reuse. My code is as follows: $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true, "args":["start-maximized", "disable-infobars","--user-data-dir=' & StringReplace(@ScriptDir, Chr(92), Chr(92) & Chr(92)) & '\\Profile 1"] }}}}' So when I run script first time, I do some checks and then log in if needed (I have to do that manually first time, it's can't be automated). After that I can easily end/start my script and authentication is there ('coz of cookies). But my problem is error suggesting to restore my last session tabs. Restore pages? Chrome didn't shut down correctly. [Restore] How can I avoid this error? I'm using this code on exit: Func _QuitChrome() _WD_Window($sSession, 'Close') _WD_DeleteSession($sSession) EndFunc Func _Exit() _QuitChrome() _WD_Shutdown() Exit EndFunc UPD: I guess --disable-features=InfiniteSessionRestore should do the trick (will test it later)?..
  4. Does anyone can help me to understand how to click on element using right mouse button (contextclick)? I have tried this code (according to what I found in this thread and wd_demo.au3) $aElements = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, '//a[@data-original-title="data 1"]|//a[@title="data 1"]', '', True) If @error = $_WD_ERROR_NoMatch Then ; _TrayTip('Nothing found!') Else For $aElement in $aElements ; _TrayTip('Going to click item...') _WD_ElementAction($sSession, $aElement, 'click') Sleep(1000) Next EndIf $aElements = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, '//a[@data-original-title="data 2"]|//a[@title="data 2"]', '', True) If @error = $_WD_ERROR_NoMatch Then _TrayTip('Nothing found!') Else For $aElement in $aElements _TrayTip('Going to right-click item...') Local $sAction $sAction = '{"actions":[{"id":"default mouse","type":"pointer","parameters":{"pointerType":"mouse"},"actions":[{"duration":100,"x":0,"y":0,"type":"pointerMove","origin":{"ELEMENT":"' $sAction &= $aElement & '","' & $_WD_ELEMENT_ID & '":"' & $aElement & '"}},{"button":2,"type":"pointerDown"},{"button":2,"type":"pointerUp"}]}]}' _WD_Action($sSession, "actions", $sAction) sleep(2000) _WD_Action($sSession, "actions") sleep(2000) Next EndIf But right click doesn't "goes" to desired element. I got context menu opened on coordinates x:0 y:0 of document (page). Please, advice. UPD, Now I see my mistake. I was trying to use "$sElement" but my object is "$aElement". All works well now. Sorry for bothering 😎
  5. @Melba23, ok, what do you use to pause script? It's quite usefull for me... Something like this? TrayCreateItem('') $mPause = TrayCreateItem("Pause") ; Needed because there is no default menu TrayCreateItem('') $mExit = TrayCreateItem("Exit") ; Needed because there is no default menu While True Switch TrayGetMsg() Case $mExit Exit Case $mPause While TrayItemGetState($mPause) = 65 Sleep(1000) WEnd EndSwitch WEnd
  6. Melba23, thanks for your suggestion. I like standart menu, so it's not an option for me. After some additional test I found that I need to place 4 empty trayitems to get everything work as expected, so my final code is like this: Opt('TrayAutoPause', 0) $iItem1 = TrayCreateItem('Item1') TrayItemSetState(-1, 1) TrayCreateItem('') $iMenu1 = TrayCreateMenu('Menu 1') $iItem2 = TrayCreateItem('Item 2', $iMenu1, -1, 1) TrayItemSetState(-1, 1) $iItem3 = TrayCreateItem('Item 3', $iMenu1, -1, 1) $iItem4 = TrayCreateItem('Item 4', $iMenu1, -1, 1) TrayCreateItem('', $iMenu1) $iItem5 = TrayCreateItem('Item 5', $iMenu1, -1, 1) TrayItemSetState(-1, 1) $iItem6 = TrayCreateItem('Item 6', $iMenu1, -1, 1) $iItem7 = TrayCreateItem('Item 7', $iMenu1, -1, 1) TrayCreateItem('', $iMenu1) TrayCreateItem('', $iMenu1) TrayCreateItem('', $iMenu1) TrayCreateItem('', $iMenu1) TrayCreateItem('') $iMenu2 = TrayCreateMenu('Menu 2') $iItem8 = TrayCreateItem('Item 8', $iMenu2, -1, 1) TrayItemSetState(-1, 1) $iItem9 = TrayCreateItem('Item 9', $iMenu2, -1, 1) $iItem10 = TrayCreateItem('Item 10', $iMenu2, -1, 1) TrayCreateItem('', $iMenu2) $iItem11 = TrayCreateItem('Item 11', $iMenu2, -1, 1) $iItem12 = TrayCreateItem('Item 12', $iMenu2, -1, 1) TrayItemSetState(-1, 1) $iItem13 = TrayCreateItem('Item 13', $iMenu2, -1, 1) TrayCreateItem('', $iMenu2) TrayCreateItem('', $iMenu2) TrayCreateItem('', $iMenu2) TrayCreateItem('', $iMenu2) TrayCreateItem('') $iMenu3 = TrayCreateMenu('Menu 3') $iItem14 = TrayCreateItem('Item 14', $iMenu3, -1, 1) TrayItemSetState(-1, 1) $iItem15 = TrayCreateItem('Item 15', $iMenu3, -1, 1) $iItem16 = TrayCreateItem('Item 16', $iMenu3, -1, 1) TrayCreateItem('', $iMenu3) $iItem17 = TrayCreateItem('Item 17', $iMenu3, -1, 1) TrayItemSetState(-1, 1) $iItem18 = TrayCreateItem('Item 18', $iMenu3, -1, 1) $iItem19 = TrayCreateItem('Item 19', $iMenu3, -1, 1) TrayCreateItem('', $iMenu3) TrayCreateItem('', $iMenu3) TrayCreateItem('', $iMenu3) TrayCreateItem('', $iMenu3) TrayCreateItem('') $iShowIEWnd = TrayCreateItem('Show IE') $iShowNotify = TrayCreateItem('Show notify') $iLogActions = TrayCreateItem('Log actions') TrayItemSetState(-1, 1) While True Sleep(1000*5) WEnd
  7. @FrancescoDiMuro, I don't need to get messages. My script is something like this: While True If TrayItemGetState($iTray2) = 65 Then Scenario 1 Elseif TrayItemGetState($iTray3) = 65 Then Scenario 2 Else Scenario 3 EndIf Sleep(1000*60*5) WEnd Why Tray 8-10 not working? There is exactly same line of code there, I even added a checkbox in the end, but still they are not working like expected. After some tests I can say that to get those radio menuitems work propertly in menu there should be 1 additional empty item (line) + 2 additional radio menuitems TrayCreateItem('', $iTrayMenu1) $iTrayDumb1 = TrayCreateItem('Dumb 1', $iTrayMenu1, -1, 1) $iTrayDumb2 = TrayCreateItem('Dumb 2', $iTrayMenu1, -1, 1) I just want to understand why it's so. According to help file There is nothing about "but not when it in tray menu"
  8. Opt('TrayAutoPause', 0) $iTrayMenu1 = TrayCreateMenu('Tray Menu 1') $iTray1 = TrayCreateItem('Tray 1', $iTrayMenu1, -1, 1) TrayItemSetState(-1, 1) $iTray2 = TrayCreateItem('Tray 2', $iTrayMenu1, -1, 1) $iTray3 = TrayCreateItem('Tray 3', $iTrayMenu1, -1, 1) $iTray4 = TrayCreateItem('Tray 4', $iTrayMenu1, -1, 1) TrayCreateItem('', $iTrayMenu1) $iTray5 = TrayCreateItem('Tray 5', $iTrayMenu1, -1, 1) $iTray6 = TrayCreateItem('Tray 6', $iTrayMenu1, -1, 1) $iTray7 = TrayCreateItem('Tray 7', $iTrayMenu1, -1, 1) While True Sleep(1000*5) WEnd Tray 1 - Tray 4 works like expected, Tray 5-7 not. Can you explain why? Opt('TrayAutoPause', 0) $iTrayMenu1 = TrayCreateMenu('Tray Menu 1') $iTray1 = TrayCreateItem('Tray 1', $iTrayMenu1, -1, 1) TrayItemSetState(-1, 1) $iTray2 = TrayCreateItem('Tray 2', $iTrayMenu1, -1, 1) $iTray3 = TrayCreateItem('Tray 3', $iTrayMenu1, -1, 1) $iTray4 = TrayCreateItem('Tray 4', $iTrayMenu1, -1, 1) TrayCreateItem('', $iTrayMenu1) $iTray5 = TrayCreateItem('Tray 5', $iTrayMenu1, -1, 1) $iTray6 = TrayCreateItem('Tray 6', $iTrayMenu1, -1, 1) $iTray7 = TrayCreateItem('Tray 7', $iTrayMenu1, -1, 1) TrayCreateItem('', $iTrayMenu1) $iTray8 = TrayCreateItem('Tray 8', $iTrayMenu1, -1, 1) $iTray9 = TrayCreateItem('Tray 9', $iTrayMenu1, -1, 1) $iTray10 = TrayCreateItem('Tray 10', $iTrayMenu1, -1, 1) TrayCreateItem('', $iTrayMenu1) TrayCreateItem('Dumb', $iTrayMenu1) While True Sleep(1000*5) WEnd Tray 1 - Tray 7 works like expected, Tray 8-10 not. Can you explain why?
  9. Oh, so you are telling me that behavior of menuradioitems are different when they are in tray menu Isn't that's strange?
  10. @FrancescoDiMuro, please, understand, I'm not trying to handle nothing in my script. My point was that radiobuttons didn't change their state automaticly. Here is an example with radiobuttons working as they should: Opt('TrayAutoPause', 0) $iTray1 = TrayCreateItem('Tray 1', -1, -1, 1) TrayItemSetState(-1, 1) $iTray2 = TrayCreateItem('Tray 2', -1, -1, 1) $iTray3 = TrayCreateItem('Tray 3', -1, -1, 1) TrayCreateItem('') $iTray8 = TrayCreateItem('Tray 8') $iTray9 = TrayCreateItem('Tray 9') $iTray10 = TrayCreateItem('Tray 10') TrayItemSetState(-1, 1) While True Sleep(1000*5) WEnd If I klick on Tray 2 / Tray 3 it will become checked and other 2 will become unchecked, just as expected. The problem comes when using radiobuttons in menu.
  11. Opt('TrayAutoPause', 0) $iTray1 = TrayCreateItem('Tray 1') TrayItemSetState(-1, 1) TrayCreateItem('') $iTrayMenu1 = TrayCreateMenu('Tray Menu 1') $iTray2 = TrayCreateItem('Tray 2', $iTrayMenu1, -1, 1) TrayItemSetState(-1, 1) $iTray3 = TrayCreateItem('Tray 3', $iTrayMenu1, -1, 1) $iTray4 = TrayCreateItem('Tray 4', $iTrayMenu1, -1, 1) TrayCreateItem('') $iTrayMenu2= TrayCreateMenu('Tray Menu 2') $iTray5 = TrayCreateItem('Tray 5', $iTrayMenu2, -1, 1) TrayItemSetState(-1, 1) $iTray6 = TrayCreateItem('Tray 6', $iTrayMenu2, -1, 1) $iTray7 = TrayCreateItem('Tray 7', $iTrayMenu2, -1, 1) TrayCreateItem('') $iTray8 = TrayCreateItem('Tray 8') $iTray9 = TrayCreateItem('Tray 9') $iTray10 = TrayCreateItem('Tray 10') TrayItemSetState(-1, 1) While True Sleep(1000*5) WEnd When I click on Tray 3 / Tray 4 / Tray 6 / Tray 7 nothing happens. Only Tray 2 and Tray 5 stay checked. I have tried setting Opt("TrayMenuMode", 8) In this case radio menuitems act like normal menuitems only looks different. I'm using AutoIt v3.3.14.5. Tested on Windows 10 LTSC 2019 (1809) x64 version: 10.0.17763 build 17763.475 and Windows Server 2008 R2. Tried run script x64 and x86 same result. Is this kind a bug or something?
  12. OS: Windows 10 Enterprise LTSC Version: 10.0.17763 build 17763 Autoit version: v3.3.14.5
  13. I have exactly the same problem but my Zoom = 100%. Several tests shows that the problem is in y-coordinate, while x seems correct (not sure). Please, suggest?
×
×
  • Create New...