Javascript单击按钮以单词开头

时间:2017-11-02 22:32:08

标签: javascript jquery applescript

我试图点击一个按钮,因为它是以id" submitButton _"开头的。鉴于之后的内容会不断变化(例如" submitButton_10a313c673cee")。这就是按钮的样子:

app.nocache.js

使用以下代码,我可以点击按钮:

<a href="#" class="btn btn-default" role="button" id="submitButton_10a313c673cee">Continue</a>

因此,从其他问题(例如jquery selector for id starts with specific text)我想我可以点击它:

tell application "Safari" 
    do JavaScript "$(id='submitButton_10a313c673cee').click();" in document 1
end tell 

然而,这不起作用。我也尝试了多种排列,但所有这些排列都没有用,例如:

do JavaScript "$(id^='submitButton_').click();" in document 1

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:0)

如果我理解正确,你可以像下面这样做

$("[id^=submitButton_]").trigger('click');

答案 1 :(得分:0)

编辑 - 基于有关引号和使用Apple脚本的评论...

试试这个:

do JavaScript "$(\"[id^='submitButton_']\").click();" in document 1

答案 2 :(得分:0)

我不是JavaScript程序员,但不时使用一些JavaScript,例如:

do JavaScript "document.getElementsByClassName('btn btn-default')[n].click();"

n中的[n].click()设置为索引编号,在各种网页上点击class name按钮。

以下示例 AppleScript 代码是我用来获取n的内容在[n].click()

根据需要设置两个变量,并将剩余的代码标记化。

在您的情况下,例如:

set theClassName to "btn btn-default"
set theText to "Continue"

tell application "Safari"
    tell document 1 of front window
        set theCount to (do JavaScript "document.getElementsByClassName('" & theClassName & "').length;") - 1 as integer
        repeat with i from 0 to theCount
            set innerText to do JavaScript "document.getElementsByClassName('" & theClassName & "')[" & i & "].innerText;"
            if innerText is theText then
                do JavaScript "document.getElementsByClassName('" & theClassName & "')[" & i & "].click();"
                exit repeat
            end if
        end repeat
    end tell
end tell

我在一个页面上运行了上面的脚本编辑器,该页面包含许多元素,其中btn btn-default 类名,其中一个Continue为它的内部文本。最后一件事是:

do JavaScript "document.getElementsByClassName('btn btn-default')[2].click();"

因此,如果你这样做,你应该能够找到正确的索引号并用它来点击按钮。

请注意,虽然示例 AppleScript 代码可以用作普通的代码,但它只是意味着获取索引号并看到它实际上单击了按钮,因此您可以在实际的脚本中使用代码的单行。