单击表格内的Safari中的链接

时间:2015-07-05 17:41:43

标签: javascript applescript

基本上我在safari中的一张巨大的桌子里面有一个链接。我想总是单击第2行第1列。链接的名称会更改在该单元格内。

这是HTML http://pastebin.com/UuwFfcyG

我在代码中放置了一个可视标记,我想点击它。但是在这个例子中你可以搜索“1222”并且它会向上拉。

一旦单击该链接,它就会打开一个窗口,我可以浏览并使用系统事件来选项和选择内容,然后重新加载页面并再次执行。

如果您可以告诉我如何检查下一栏中的文字,可以获得奖励。第2行第2列。如果显示“打开”,则单击左侧单元格中的链接。

完全披露我已经编写了一个AppleScript程序来执行此操作,但它使用由屏幕坐标控制的python点击来执行此操作,因此如果分辨率更改或我添加了另一个监视器,则会破坏程序。这太乱了,但绝对有效。我只是在寻找更原生的东西。

任何帮助将不胜感激!谢谢 布兰登

1 个答案:

答案 0 :(得分:0)

所以你自动想看看这个表的第2行第1列是否有链接并点击它?

<script LANGUAGE="Javascript">
function clickLinksInTable(i) {
    // check if a link even exists in this row
    if (!document.getElementsByTagName("tr")[i+1].getElementsByTagName("td")[0].getElementsByTagName("a")[0] || !document.getElementsByTagName("tr")[i+1].getElementsByTagName("td")[1]) {
        // fail silently.
    } else {
        // check if the next column to the right contains the word "open" .
        if (document.getElementsByTagName("tr")[i+1].getElementsByTagName("td")[1].innerHTML.toLowerCase().indexOf("open") != -1) {
            // get the row (tr) that the user wants (the first row never contains a link, so add one to i to avoid this being a problem)
            // then get the first column (td) in that row, and then get the first (probably only) link in that column.
            link = document.getElementsByTagName("tr")[i+1].getElementsByTagName("td")[0].getElementsByTagName("a")[0];
            // then... click on it! While we're mainly focussed on Safari, it's good to support other browsers as well,
            // just in case we want to use this code again elsewhere.
            // Firefox
            if (document.createEvent) {
                var event = document.createEvent("MouseEvents");
                event.initEvent("click", true, true);
                link.dispatchEvent(event);
            }
            // IE
            else if (link.click) {
                link.click();
            }
        }
    }
}
// call the function we made earlier. The value in brackets is the row number of the link you want to click.
// this will click the link in row two, column one.
clickLinksInTable(0);
// this would click the link in row five, column one.
//clickLinksInTable(3);
</script>

在桌子后添加。