Amaç: Buradaki hedefim, ISS'imin kabul edeceği bağlantı hızı verilerini toplamaktır; böylece, bu yeni ISS'ye geçtikten hemen sonra yaşadığım 1-5 dakika süren bağlantı hızında dramatik düşüşler gösterebilirim (aynı ekipman - önceden olmadan) bu hız tutarsızlıkları). Kablolu bir bilgisayardan çalıştırıldıklarında hız testi web sitelerini kullanarak (yani Wifi üzerinden bağlanmayan) bağlantı hızı testi sonuçlarını yalnızca kabul eder (ve erişebilir).
Bu yüzden, genellikle işe yarayan küçük bir otomatikleştirici iş akışı yarattım ... bağlantı hızı düşmediği ve web sitesi yanıt vermediği sürece - bu da tüm hedefimi engelliyor!
Başlangıçta aşağıdaki başlangıç eylemlerini bir watch-me-do'da kaydetmiştim:
- Bağlantı biriminde Safari'yi tıklayın
- Bir yer imleri klasörünü tıklayın
- Hız testi web sitesi için yer imini tıklayın.
- Hız testi başlat düğmesine tıklayın
genel olarak işe yarayan ve hataya dayanıklı sonuçların işlenmesini takip eder. Bununla birlikte, iş akışında ölümcül bir hataya neden olabilecek 2 şey olabilir:
- Web sayfası yüklenmiyor
- Web sayfası yükleniyor, ancak hız testi başlat düğmesi yüklenmiyor (sayfa başlangıçta düğmenin görüneceği yükleme grafiğini gösterir)
Ara sıra yapılan testin başarısız olması konusunda iyiyim. Sayfadaki metni çözümleyen bir kod var ve bu tür sonuçlar günlükte zaman damgalı bir sınama hatası olarak görünüyor.
Bununla birlikte, komut dosyası, düğmeyi tıklayamadığında ve tüm diğer sınama işlemleri durduğunda bir hata yayınlar; bu nedenle, düğme tıklatma eylemini bekle-beni-do'dan iş akışına sürüklemeye çalıştım, bu da düzenlenebilir bir el yazısı olur. on error
Blok içindeki hata çağrısını değiştirmek için betiği düzenleyebileceğimi düşündüm . Ortaya çıkan geçici çözüm eserlerin tür, ama şimdi başarıyla tıklandığında oluyor düğmesine düşünür ve sonunda zaman aşımı vurur, gider ASLA görünür on error
ve ekledim hattını çalıştırır: exit repeat
.
Peki burada neler oluyor? Neden komut dosyası, tıklama işleminin başarıyla gerçekleştirildiğini algılamıyor gibi görünüyor?
İşte beni bekle işleminden sürüklenen düğme tıklaması eyleminin kodu:
on run {input, parameters}
-- Click the “Start” button.
tell application "Safari" to activate --I added this line
delay 6.095782
set timeoutSeconds to 2.0
set uiScript to "click UI Element \"Start\" of group 1 of group 2 of UI Element 1 of scroll area 1 of group 1 of group 1 of tab group 1 of splitter group 1 of window \"Speed Test\" of application process \"Safari\""
my doWithTimeout(uiScript, timeoutSeconds)
return input
end run
on doWithTimeout(uiScript, timeoutSeconds)
set endDate to (current date) + timeoutSeconds
repeat
try
run script "tell application \"System Events\"
" & uiScript & "
end tell"
exit repeat
on error errorMessage
if ((current date) > endDate) then
exit repeat --I replaced an error call here
end if
end try
end repeat
end doWithTimeout
- ISS detaylarını değiştirdim (aşağıdaki yorumlara bakınız).