0

オンライン ゲームを自動化および管理する vb.net プログラムを作成しています。ゲームのページを表示および操作するために、Awesomium Web コントロールを使用しています。

ユーザーが特定の要素にカーソルを合わせるまで、ソースに表示されていないデータを取得する必要があるポイントがあります。必要なデータが利用可能になるまで、javascript (jquery ではない) を使用してプログラムでカーソルを合わせるにはどうすればよいですか?掴んだ?

これが以前に尋ねられた場合はお詫びします (ウェブページを所有している誰かの観点から)、解決策を何時間も探していて、何も見つかりません.

私が使用しようとしたが失敗したのは次のとおりです。

function findBpDate(){  
    document.getElementById('tileDetails').children[1].children[0].children[1].children[0].fireEvent('onmouseover');    
    return document.getElementsByClassName('text elementText')[0].textContent;
}

これは、アプリケーションにコールバックすると「未定義」を返しますが、正しいDOM要素を指していると確信しています。

これは私がjavascriptに「ホバー」させたいものです:

   <span class="a arrow disabled">Send troops</span>

この要素に「ホバー」すると、この要素のテキストが、取得する必要があるテキストに変わります。

   <div class="text elementText">Beginners protection until 20/07/13 07:51 am.</div>

マウスが必要な要素に「ホバー」したときに要素がどのように見えるかを上に示しましたが、これは、ゲームのプレイ中にユーザーがホバーした要素に応じて大きく変化します。収集したものから、ソースはどこにありますかゲーム内の各ツールチップのテキストを保持します。

そのため、特定の要素の上にカーソルを置き、カーソルが移動している間にツールチップ text/"text elementText" 要素からテキストを取得する関数が必要です。

4

2 に答える 2

0

これは、js/dom を使用すると 10 倍簡単になります。http://jsfiddle.net/pA2Vd/

これを行います... Id を使用して何らかの方法で要素への参照を取得できると仮定すると、はるかに簡単になります。

var elm = document.getElementsByClassName('a arrow disabled')[0];
var txt = document.getElementsByClassName('text elementText')[0];
var evt = new Event('mouseover');
elm.dispatchEvent(evt);
var status = txt.innerText;

(役立つものを)それ以外の場合は、イベントをキャプチャし、誰がそれを起動したかを検出し、それがこのクラスとタグ名を持っているかどうかを確認する必要があります。処理が多い。

var txt,spn,status='';
document.getElementByTagName('span').forEach(function(d){
    if (d.tagName=="div" && d.className == 'text elementText'){
    var txt = d;
    }    
}

window.onmouseover = function(e) {
    var elm = e.target;
    if (elm.tagName=="SPAN" && elm.className == 'a arrow disabled') {
       status=txt.innerText;
    }
}
于 2013-07-22T21:40:45.730 に答える
0

WebView.InjectMouseMove(x, y) を試してください。

何かのようなもの

    public Point GetElementPosition(dynamic element)
    {
        dynamic rect = element.getBoundingClientRect();
        using (rect)
        {
            return new Point(rect.left, rect.top);
        }
    }

    dynamic element = webView.ExecuteJavascriptWithResult("document.getElementById('id')");
    Point pos = GetElementPosition(element);
    webView.InjectMouseMove(pos.X, pos.Y);
于 2013-07-22T20:18:44.223 に答える