问题描述
我正在尝试自动在此纽约健康检查webiste上填写表格。问题在于,它似乎会自动生成条目“您正在输入的学校或设施”的选项列表。正如我在网络上的示例中可以找到的那样,选项列表似乎在页面源代码中的位置不太理想,其中每个选项都有自己的ID。
我想知道如何使用javascript(也许是getElementById
吗?)从列表中选择特定选项(在这种情况下为学校所在地)?
解决方法
以下是一些示例 AppleScript 代码,您可能会觉得有用:
set targetURL to "https://healthscreening.schools.nyc/?type=G"
set guestIsStudent to true -- true or false
set guestFirstName to "John"
set guestLastName to "Doe"
set guestEmail to "johndoe@example.com"
set schoolFacility to "P.S. 452"
set guestLocationFloor to ""
tell application "Safari"
activate
make new document with properties {URL:targetURL}
tell application "System Events" to repeat until exists (buttons of ¬
UI elements of groups of toolbar 1 of window 1 of ¬
process "Safari" whose name = "Reload this page")
delay 0.5
end repeat
tell document 1
if guestIsStudent then
do JavaScript "document.getElementById('guest_isStudent').click();"
else
do JavaScript "document.getElementById('guest_isVisitor').click();"
end if
do JavaScript "document.getElementById('guest_first_name').value = '" & guestFirstName & "';"
do JavaScript "document.getElementById('guest_last_name').value = '" & guestLastName & "';"
do JavaScript "document.getElementById('guest_email').value = '" & guestEmail & "';"
do JavaScript "document.getElementById('guest_location_floor').value = '" & guestLocationFloor & "';"
do JavaScript "document.getElementsByClassName('k-icon k-i-arrow-60-down')[0].click();"
delay 1
tell application "System Events"
keystroke "P.S. "
delay 0.5
keystroke "452"
delay 0.5
key code 125 -- Down Arrow
delay 0.5
key code 36 -- Enter
end tell
if (do JavaScript "document.getElementsByClassName('k-textbox')[0].value;") is equal to schoolFacility then
-- # Click the Fill Out Daily Screening button.
do JavaScript "document.getElementsByClassName('btn btn-primary mt-2 btn-lg')[0].click();"
end if
end tell
end tell