我已在网站上阅读了一些问题,但我无法解决问题。 我正在尝试编写一个自动添加"喜欢"到Instagram照片。 阅读其他主题我到达了:
"
tell application "Safari"
activate
set URL of document 1 to "https://www.instagram.com/p/BZZFmzcB4sK/?hl=it&explore=true"
delay 3
do JavaScript "document.getElementById('_8scx2 coreSpriteHeartOpen').click();" in document 1
end tell
"
我的问题是我无法找到类似按钮的ID。 我认为它是" _8scx2 coreSpriteHeartOpen"但它不起作用。 你能救我吗?
答案 0 :(得分:0)
您需要使用.getElementsByClassName()
,因为您使用的是班级名称。但是,此函数返回一个元素数组,因此您只需要获取第一个元素。
示例: document.getElementsByClassName('_8scx2 coreSpriteHeartOpen')[0].click();
答案 1 :(得分:0)
所以代码将是:
tell application "Safari"
activate
set URL of document 1 to "https://www.instagram.com/p/BZYf6mKFd4F/?taken-by=alessandrosimon"
delay 3
do JavaScript "document.getElementsByClassName('_8scx2 coreSpriteHeartOpen')[0].click();"
end tell
我不知道为什么这是错的......名字类可能错了? 如果我点击Like按钮上的theispector elemento,它会显示:
<a class="_eszkz _l9yih" href="#" role="button" aria-disabled="false">
<span class="_8scx2 coreSpriteHeartOpen">Mi piace</span></a>
答案 2 :(得分:0)
即使是一个老问题... 打开页面然后等待3秒钟不是一个好主意。因为如果在页面完全加载之前执行AppleScript单击,则此操作将失败。 实际上,您必须打开页面,等待元素被加载,然后执行单击。
例如:
tell application "Safari"
tell front document to repeat until (do JavaScript "document.getElementsByClassName('glyphsSpriteNew_post__outline__24__grey_9 u-__7').length") is greater than 0
end repeat
-- Now, as th element exist, we can perform the clicl
do JavaScript "document.getElementsByClassName('glyphsSpriteNew_post__outline__24__grey_9 u-__7')[0].click();" in front document
end tell
请注意,如果您在脚本编辑器中运行脚本,此方法也可以正常工作,但是如果您将脚本导出为APP,则会失败。若要使此功能与脚本的APP版本一起正常使用,必须打开系统首选项的安全模块并将APP捕获到列表中。