单击带有Apple脚本的Like按钮

时间:2017-09-23 20:20:05

标签: javascript html button applescript

我已在网站上阅读了一些问题,但我无法解决问题。 我正在尝试编写一个自动添加"喜欢"到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"但它不起作用。 你能救我吗?

3 个答案:

答案 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捕获到列表中。