AppleScript ใน OS X 10.10 เพื่อปรับขนาดหน้าต่าง Safari และถ่ายภาพหน้าจอของหน้าต่างนั้นและทำซ้ำหลายขนาด


1

ฉันต้องการสร้างแอปพลิเคชัน AppleScript ที่เมื่อเรียกใช้จะทำสิ่งต่อไปนี้:

  1. เปิด Safari แล้วไปที่ URL เฉพาะหรือไฟล์ที่มีตัวคั่นบรรทัดหรือ CSV ไม่จำเป็นต้องใช้ แต่จะทำให้การสร้างภาพหน้าจอหลายหน้าของหน้าเว็บที่แตกต่างกันเร็วขึ้นมาก

  2. ปรับขนาดหน้าต่าง Safari เป็นขนาดใดขนาดหนึ่ง

  3. ถ่ายภาพหน้าจอของหน้าต่าง Safari โดยใช้ชื่อไฟล์ว่าเป็น URL พร้อมกับขนาดหน้าจอ

คำตอบ:


2

ฉันได้รับเท่านั้น เป็นบางส่วน การแก้ปัญหาซึ่งทำงานนอกเหนือจากปัญหาเล็ก ๆ น้อย ๆ

ก่อนอื่นคุณไม่สามารถจัดเก็บ URL ในชื่อไฟล์ (เนื่องจากเครื่องหมายทับและอักขระพิเศษ) ดังนั้นคุณต้องระบุชื่อเว็บไซต์

แต่ที่สำคัญกว่านั้นจนถึงการนำเข้า CSV ไม่ได้รับการดำเนินการ CSV เป็นข้อกำหนดที่ยากจริง ๆ หรือคุณสามารถรับรายการ URL ในรูปแบบอื่นได้หรือไม่ หากไม่มีโปรดอัปเดตคำถามของคุณด้วยบรรทัดที่เป็นแบบอย่างของไฟล์ CSV ของคุณ ฉันจะทำงานกับมันและอัปเดตคำตอบของฉันโดยเร็วที่สุด

on open_url(theUrl, theUrlName, x0, y0, xSize, ySize)
    tell application "Safari"
        open location theUrl
        activate

        set bounds of window 1 to {x0, y0, xSize, ySize}
        set windowID to id of window 1
        set the_state to missing value

        repeat until the_state is "complete"
            set the_state to (do JavaScript "document.readyState" in document 1)
            delay 0.3
        end repeat

        set theFolder to POSIX path of (path to desktop as string)
        set shellCommand to "/usr/sbin/screencapture -l " & windowID & " " & quoted form of (theFolder & "Screen Shot " & theUrlName & " " & xSize & "x" & ySize & ".png")
        do shell script shellCommand

    end tell
end open_url


set resolutionList to {{640, 480}, {1024, 768}}
set siteList to {{"http://www.apple.com", "Apple"}, {"http://www.google.com", "Google"}}

repeat with resolution in resolutionList
    set xSize to item 1 of resolution
    set ySize to item 2 of resolution
    repeat with theSite in siteList
        set theUrl to item 1 of theSite
        set theUrlName to item 2 of theSite
        open_url(theUrl, theUrlName, 0, 0, xSize, ySize)
    end repeat
end repeat

ขอบคุณที่สมบูรณ์แบบ เพียงสิ่งเดียวเท่านั้นภาพหน้าจอจะถูกถ่ายเร็วเกินไปก่อนที่จะโหลดหน้าเว็บ ฉันเพิ่มความล่าช้า นอกจากนี้ยังมีวิธีบอก Safari ถึง Mimick เพื่อให้คิดว่าเป็น iPhone หรือ iPad หรือไม่
Mike

ใช่ความล่าช้านั้นค่อนข้างยุ่งยาก ฉันพยายามที่จะอยู่กับ readystate ของ JavaScript แต่มันเสร็จหลายครั้งก่อนที่เบราว์เซอร์จะแสดงหน้าเว็บอย่างสมบูรณ์ หากต้องการเปลี่ยน User-Agent คุณสามารถลอง AppleScript โพสต์ที่นี่ (หมายเหตุ: ฉันไม่ได้ทดสอบ):
Asmus

0

มันเป็นการดีกว่าที่จะตรวจสอบว่าหน้าโหลดเสร็จก่อนที่จะทำการจับภาพหน้าจอหรือไม่ รับรหัสคำตอบบางส่วนดั้งเดิมของ Asmus ตามแนวของ ...

delay 10

tell application "Safari"
    do JavaScript "document.readyState == 'complete'" in window 1's current tab
end tell
set loaded to result
if loaded is true then
    set shellCommand to "/usr/sbin/screencapture -l " & windowID & " " & quoted form of (theFolder & "Screen Shot " & theUrlName & " " & xSize & "x" & ySize & ".png")
    do shell script shellCommand
end if

... จะดูแลเรื่องนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.