Koneksi adalah kesalahan yang tidak valid ketika menjalankan Applescript dan Safari

3

Applescript berikut menunggu halaman untuk memuat sebelum melanjutkan do javascript "document.body.innerText" bagian dari naskah. Tampaknya bekerja dengan sangat baik kecuali untuk satu hal. Jika Safari berjalan tetapi tidak ada jendela yang sedang terbuka, menjalankan skrip ini menghasilkan

kesalahan "Safari mendapat kesalahan: Koneksi tidak valid." angka -609

Namun jika saya menjalankan ini ketika Safari ditutup akan meluncurkan Safari, buka URL yang ditentukan dan setelah halaman dimuat, jalankan bagian javascript. Saya tidak mengerti mengapa ini mendapat kesalahan jika Safari berjalan tanpa jendela terbuka.

tell application "Safari"
    activate
    if not (exists document 1) then reopen
    tell front document
        set URL to "http://example.com"
        repeat until length of (source as text) is not 0
            delay 0.5
        end repeat
        do javascript "document.body.innerText"
    end tell
end tell

Kesalahan selalu menyoroti source as text bagian dari naskah. Saya mencoba mengubah length of (source as text) is not 0 untuk repeat until name is "example domain" tetapi kesalahan masih terjadi jika tidak ada jendela terbuka dan Safari sedang berjalan.

I0_ol
sumber

Jawaban:

2

Anda perlu menukar posisi activate garis kode dengan if not (exists document 1) then reopen garis kode .

Contoh:

tell application "Safari"
    if not (exists document 1) then reopen
    activate
    tell front document
        set URL to "http://example.com"
        repeat until length of (source as text) is not 0
            delay 0.5
        end repeat
        do javascript "document.body.innerText"
    end tell
end tell

Tangkapan layar Editor Skrip, di bawah, dijalankan dengan Safari terbuka dan tanpa jendela apa pun dibuka.

Script Editor window

Pertama saya harus memeriksa "[√] Tampilkan menu Kembangkan di bilah menu" (Safari & gt; Preferensi ... & gt; Lanjutan) dan kemudian pada menu Kembangkan klik "Izinkan JavaScript dari Acara Apple". Selanjutnya saya menyalin dan menempelkan AppleScript Anda kode di Script Editor dan mengklik Jalankan Script tombol dan itu berjalan tanpa kesalahan dan mengembalikan teks http://example.com halaman web. Namun Safari ditutup ketika saya menjalankan skrip pertama kali.

Setelah membaca pertanyaan Anda lagi, saya dapat mereproduksi kesalahan dengan membiarkan Safari terbuka tanpa jendela terbuka. Saya kemudian melihat lebih teliti pada Anda kode dan diperhatikan activate sebelumnya if not (exists document 1) then reopen dan activate perlu setelah itu untuk menghindari kesalahan.

user3439894
sumber
Memiliki activate di tempat yang salah bahkan tidak pernah terlintas dalam pikiranku. Bekerja dengan baik sekarang. Terima kasih telah menyelesaikan satu lagi pertanyaan terkait Apple saya.
I0_ol