Soy nuevo en AppleScript y realmente agradecería si alguien con experiencia pudiera ayudarme a resolver mi problema. A continuación se muestra básicamente lo que quiero que haga el script. Este script que adjunté funciona, sin embargo, no obtengo los resultados de búsqueda del texto que estoy buscando. Leí en alguna parte que necesitaría buscar InnerHTML con javascript agregado que no tengo idea de cómo hacerlo.
Esto es lo que me gustaría que hiciera el script:
Abra páginas web una a la vez desde la lista en el archivo txt
cuando se carga la página web, busque "texto"
si no se encuentra "texto"
después
cerrar pestaña, abrir la siguiente URL en la lista
si se encuentra "texto"
después
copiar URL a un archivo de texto
una vez que la url se copia y se guarda
después
cerrar pestaña, abrir la siguiente URL en la lista
repetir
Si alguien tiene el tiempo para ayudarme con esto o indicarme la dirección correcta, estaría más que agradecido. Muchísimas gracias por su tiempo.
on run {input, parameters} read (item 1 of input) set ps to paragraphs of the result set tot to count ps tell application "Safari" reopen activate end tell repeat with i from 1 to tot set p to item i of ps if p is not "" then try tell application "Safari" tell front window set r to make new tab with properties {URL:p} set current tab to r delay 1 if i = tot then exit repeat repeat delay 1 tell application "Safari" activate --the source code of current Tab set sourceOfTab to source of front document set urlOfTab to URL of front document if sourceOfTab contains "search term" then --copy of the url in textFile do shell script "echo " & urlOfTab & " >> ~/Desktop/test.txt" else close current tab of front window end if end tell get URL of r end repeat end tell end tell end try end if end repeatcarrera final
No creo que el problema esté en tu rutina de búsqueda. Si reduzco el script a solo la rutina de búsqueda, parece funcionar:
tell application "Safari" --the source code of current Tab set sourceOfTab to source of front document set urlOfTab to URL of front document if sourceOfTab contains "search term" then --copy of the url in textFile do shell script "echo " & urlOfTab & " >> ~/Desktop/test.txt" else display dialog "Search term not found" --close current tab of front window end if end tellEs decir, si tengo esta pregunta abierta, el archivo se crea en el Escritorio, porque el texto "término de búsqueda" aparece en esta página. Si cambio el término de búsqueda a algo que no aparece en esta página, aparece "Término de búsqueda no encontrado".
Para localizar el problema, probablemente querrá dividir el script en pasos y ver qué paso no está haciendo lo que desea. Por ejemplo,
Cree una versión de la secuencia de comandos que simplemente recorra las URL y se las muestre, para que sepa que está utilizando las URL correctas.
Cree una versión de la secuencia de comandos que recorra las URL y las abra en una ventana del navegador, pero no haga nada más, para que sepa que Safari está abriendo las páginas web correctas.
Solo una vez que los primeros dos pasos estén haciendo lo que deberían, agregará la rutina de búsqueda nuevamente.
También puede proporcionar datos de muestra dentro de su secuencia de comandos, para que podamos ejecutar nuestros experimentos con los mismos datos con los que tiene problemas. Actualmente, no estoy seguro de cómo está obteniendo los datos para el controlador de run , por ejemplo.
Aquí hay un ejemplo de hacer esto como una aplicación de arrastrar y soltar, es decir, una aplicación que acepta archivos colocados sobre su icono en el Finder (los archivos deben ser archivos de texto, una URL por línea):
property searchTerm : "search term" property matchFilePath : (path to desktop folder as text) & "Matching URLs.txt" on open droppedFiles get path to desktop folder as text set matchFile to open for access file matchFilePath with write permission repeat with droppedFile in droppedFiles read droppedFile repeat with webURL in paragraphs of the result --ignore empty lines, which contain one character (the return) if the (count of webURL) is greater than 1 then tell application "Safari" open location webURL delay 1 set theRealURL to the URL of the front document if the source of the front document contains searchTerm then write theRealURL & return to matchFile starting at eof end if close current tab of front window end tell end if end repeat end repeat close access matchFile end open Para probar su secuencia de comandos y brindarle consejos, necesitaremos saber cómo llegan las URL a su controlador de run y qué formato toman esas URL. Además, si bien creo que tenemos una idea bastante buena de cómo espera que sea una ejecución exitosa, es posible que también desee describir más claramente los resultados que está viendo y que no quiere ver.