Come fare clic sul pulsante OK nell'avviso di Google Chrome, utilizzando AppleScript

2

Sto usando AppleScript con Google Chrome per automatizzare un processo noioso su un sito web. In determinate condizioni, il sito Web ha un popup di avviso per segnalare all'utente un problema. Ciò impedisce il completamento del resto dello script di automazione. Devo rilevare questo popup, registrarlo su un file (ho già capito), e fare clic sul pulsante ok per continuare. Il codice che attualmente ho assomiglia a questo:

on run args
repeat with catNum in args
    tell application "Google Chrome"
        set myurl to "http://database.com/whatever"
        open location myurl
        delay 1
        tell active tab of window 1
            -- Click the button that needs to be clicked
            execute javascript "document.getElementById('verbatimCoordinatesDiv').getElementsByTagName('div')[0].getElementsByTagName('a')[0].click()"

            -- What I need to do:
            -- If (popup alert) then
                -- do shell script "echo Issue with " & catNum & " > templog.txt"
                -- Click ok button on popup
            -- else
                -- This clicks the save button
                execute javascript "document.getElementById('editButtonDiv').getElementsByTagName('input')[0].click()"
            -- end if

            delay 1
        end tell
        delay 1
        -- Close the tab
        delete tab (active tab index of window 1) of window 1
    end tell
end repeat
end run

Finora ciò che funziona funziona bene quando non c'è un messaggio popup, tuttavia richiede l'intervento manuale quando viene attivato un popup. Di seguito è riportato uno screenshot della finestra popup e della finestra di ispezione accessibilità.

EDIT:Eccounaversioneridottadiciòchestocercandodifare,masuunsitopubblico.Sembrachel'avvisodijavascriptimpediscachequalcosaavvenganelbrowserfinoaquandovienecliccatomanualmentesuOK.

tellapplication"Google Chrome"
    -- Go to the website with the javascript button
    set myurl to "http://t4t5.github.io/sweetalert/"
    open location myurl
    delay 1
    tell active tab of window 1
        -- Click the normal javascript button on the page
        execute javascript "document.getElementsByTagName('button')[1].click()"
    end tell
    -- Delete the tab when done
    delete tab (active tab index of window 1) of window 1
end tell
    
posta brody painter 03.09.2015 - 23:36
fonte

2 risposte

1

Puoi utilizzare una funzione su window.alert per intercettare qualsiasi avviso e per annullare questo avviso , utilizzare una variabile per vedere se c'è stato un tentativo di allerta.

In questo modo:

tell application "Google Chrome"
    -- Go to the website with the javascript button
    set myurl to "http://t4t5.github.io/sweetalert/"
    open location myurl
    delay 1
    tell active tab of window 1
        -- Click the normal javascript button on the page
        set popupAlert to execute javascript "var isAlert=false; (function() {window.alert = function() {isAlert=true; return;};})(); document.getElementsByTagName('button')[1].click(); isAlert"
        if popupAlert = "true" then -- This page has attempted to display an alert.
            do shell script "echo 'Issue with github.io' > templog.txt"
        else -- no alert, continue
            -- This clicks the save button
        end if
    end tell
    -- Delete the tab when done
    delete (get active tab of window 1)
end tell
    
risposta data 05.09.2015 - 05:56
fonte
0

Puoi utilizzare l'ispettore di accessibilità di AppleScript o alcune varianti di questo script per ottenere il nome della finestra di dialogo finestra, o il testo in esso o qualche altra caratteristica identificativa. Se il tuo script trova tali informazioni, significa che la finestra di dialogo è spuntata ed è possibile intervenire.

-- Entire Contents Demo - mini
-- BP ages ago or so

-- This'll get all the controls and structures associated with an App's window and menus
-- In a form which is easily pasteable into your own scripts
-- and show them in the result pane below.
--
-- Copy that into a text editor and change commas to returns to get an easily readable list.
--
-- The script can take a long time if there are LOTS of window items, such as
-- in the "music" pane of iTunes. It may even time out if you have a huge iTunes library
-- The script'll process most App's UI structures in under a minute

set appname to "System Preferences" -------------------------- Set this to the App you want to look at

set winstuff to "defaultval"
set menustuff to "defaultval"

tell application appname
activate
end tell

tell application "System Events"
tell process appname
set winstuff to entire contents of front window
set menustuff to entire contents of menu bar 1
end tell
end tell
--return winstuff & "rrrr" & menustuff -- comment this out to get just winstuff
return winstuff -- comment this out too to get just menustuff
--return menustuff 
    
risposta data 04.09.2015 - 04:00
fonte

Leggi altre domande sui tag