2 votos

Cómo a haga clic en el botón ACEPTAR en Google Chrome alerta, usando AppleScript

Estoy usando AppleScript con Google Chrome para automatizar un proceso tedioso en un sitio web. En ciertas condiciones, el sitio web tiene una alerta emergente para notificar al usuario de un problema. Esto impide que el resto de la automator secuencia de comandos de finalización. Necesito detectar esta ventana emergente, el registro en un archivo (ya tengo esto resuelto), y haga clic en el botón aceptar para continuar. El código que tengo actualmente tiene este aspecto:

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

Hasta ahora lo que tengo funciona bien cuando no hay ningún mensaje emergente, no obstante, se requiere la intervención manual cuando una ventana está activa. A continuación se muestra una captura de pantalla de la ventana emergente y Accesibilidad de la ventana Inspector.

Accessibility Inspector Window and Popup Window

EDIT: Aquí es una versión reducida de lo que estoy tratando de hacer, pero en un sitio público. Parece como si la alerta de javascript es la prevención de cualquier cosa que suceda en el navegador hasta que ACEPTAR manualmente se hace clic.

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
        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

1voto

Baczek Puntos 150

Puede usar una función en window.alert a interceptar cualquier alerta y para cancelar esta alerta, el uso de una variable para ver si había una alerta de intento.

Como este :

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

0voto

leora Puntos 5626

Usted puede utilizar el AppleScript Accesibilidad Inspector o alguna variante de esta secuencia de comandos para obtener el nombre de la ventana de diálogo, o el texto o alguna otra característica distintiva. Si el script se encuentra esa información, significa que el diálogo ha aparecido, y usted puede tomar acción.

-- 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 

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X