AppleScript 无法点击输入标签来添加文件

AppleScript cannot click input tag to add file

我正在尝试使用 applescript 将文件添加到网站的输入字段。

到目前为止,这是我的代码:


set ClickInput to "var myInput = document.getElementByClassName('jsx-1828163283 upload-btn-input')[0]; myInput.dispatchEvent(new MouseEvent('mousedown')); myInput.dispatchEvent(new MouseEvent('mouseup'));"

set ClickInput2 to "var myInput = document.getElementsByName('upload-btn')[0]; myInput.dispatchEvent(new MouseEvent('mousedown')); myInput.dispatchEvent(new MouseEvent('mouseup'));"

activate application "Safari"

tell application "Safari" 
   open location "https://www.example.com/upload"
   set theTab to tab 1 of window 1
    
   -- wait until page loads
   repeat while document 1's source = ""
      delay 0.5
   end repeat

   -- do JavaScript ClickInput in theTab
   do JavaScript ClickInput2 in theTab

   delay(5)

   close theTab

end tell

这里是我想要select的输入元素周围的HTML:

<div class="jsx-3758851661 upload">
   <div class="jsx-1828163283 upload-btn">
      <div class="jsx-3758851661 card stage-1">
         <div class="jsx-3758851661 text-main">Select video to upload</div>
         <div class="jsx-3758851661 text-sub text-sub-margin">Or drag and drop a file</div>
         <br class="jsx-3758851661">
         <ul class="jsx-3758851661 text-sub">
            <li class="jsx-3758851661">MP4 or WebM</li>
            <li class="jsx-3758851661">720x1280 resolution or higher</li>
            <li class="jsx-3758851661">Up to 60 seconds</li>
         </ul>
      </div>
      <input type="file" name="upload-btn" accept="video/mp4,video/x-m4v,video/*" class="jsx-1828163283 upload-btn-input">
   </div>
</div>

该站点的工作方式是单击最外面的 div <div class="jsx-3758851661 upload">,然后弹出 Safari 文件查找器,然后您 select 想要什么文件。

我试过点击输入标签外的 div,我试过单独点击输入标签。

我试图通过 selecting div 的类名和输入标签

来做到这一点

我还尝试通过 select 输入标签的名称并单击它来做到这一点

None 个有效。

我不确定它是否点击了,但是 none 使文件查找器弹出

你们有什么想法吗?如果您想澄清一下,请告诉我。谢谢!

发现 set ClickInput to "document.getElementsByName('upload-btn')[0].click();" 有效!

getElementsByName 不是我知道的标准函数,因此您可能想使用 getElementsByClassNamequerySelector.

input 元素有两个 class 名称,我将在下面的示例中选择 ”upload-btn-input”

tell application id "com.apple.safari" 
        open location "https://www.example.com/upload"
        tell document 1
                repeat while the source = ""
                        delay 0.5
                end repeat
                do javascript "document.querySelector('.upload-btn-input').click();"
        end tell
end tell

如果您可以提供相关页面的实际 URL,这将使我能够优化此答案以确保它适合您的尝试。