如何使用Javascript从“可折叠下拉列表框”中选择一个似乎是自动生成的选项?

问题描述

我正在尝试自动在此纽约健康检查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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...