1

私はこれまでAppleScriptをあまり使ったことがありませんが、このプロセスを自動化しようとしています。クリックする必要のあるボタンのあるWebサイトがあります。ただし、ボタンは次のようにJavaScript / jQuery/AJAXで実装されます。

<div id="divIdOfButton" class="someClass">
    <div class="divClassOfButton someOtherClass">
        <img src="imgOfButton">
    <div>

...

<script type="text/javascript">

$(document).ready(function() {
$('#divIdOfButton .divClassOfButton).click(function() {
...
}}

運が悪かったので試してみました

tell application "Safari"
    activate
    delay 1
    set URL of first document to "http://example.com/"
    do JavaScript "document.getElementById('divIdOfButton').getElementByClassName('divClassOfButton')[0].click()" in front document
end tell

たくさん検索しましたが、何も見つかりませんでした。本当に助けていただければ幸いです。

4

3 に答える 3

5

ほとんどのブラウザは、クリックイベントハンドラへの直接呼び出しを無視するようです(明らかにセキュリティ上の理由から、ブラウザでJavaScriptセキュリティモデルを開始しないでください)。そのため、click()呼び出しはまったく何もしません。JavaScriptのイベントディスパッチメカニズムを介してクリックイベントをトリガーできます(この質問回答を参照してください)。ただし、ターゲットとするサイトにすでにjQueryが含まれている場合は、次のことを行う必要があります。

tell application "Safari"
    do JavaScript "$('#divIdOfButton .divClassOfButton').click();" in front document
end tell

にクラスのボタンが複数ある場合はDIV、フィルター式を追加する必要があります。

tell application "Safari"
    do JavaScript "$('#divIdOfButton .divClassOfButton :equ(0)).click();" in front document
end tell

querySelectorAllただし、これがないと、jQueryによって活用されるパフォーマンス上の利点が失われます( jQuery APIドキュメントを参照)。

SafariのStackOverflowサイトで受信トレイのドロップダウンをトリガーしてテストしました。

于 2012-04-13T14:53:51.507 に答える
1

私はUIブラウザをチェックします。それはこの種のものに最適です。私はいつもそれを使用しています。

于 2012-11-09T17:00:47.550 に答える
-1

私はApplescriptユーザーではありませんが、複数形の「要素」であるgetElementByClassName必要があることをすぐに伝えることができます。getElementsByClassName

于 2012-04-13T14:29:12.580 に答える