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
不是我知道的标准函数,因此您可能想使用 getElementsByClassName
或 querySelector
.
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,这将使我能够优化此答案以确保它适合您的尝试。
我正在尝试使用 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
不是我知道的标准函数,因此您可能想使用 getElementsByClassName
或 querySelector
.
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,这将使我能够优化此答案以确保它适合您的尝试。