2015-07-20 12 views
7
üzerinde çalışmıyor

Otomasyon için javascript ile 'enter' tuşa basmayı deniyorum çalışıyorum.javascript enter olayı google

var script = document.createElement('script'); 
script.src = 'https://code.jquery.com/jquery-1.10.2.min.js'; 
script.type = 'text/javascript'; 
document.body.appendChild(script); 
var e = jQuery.Event("keypress"); 
e.which = 13; //choose the one you want 
e.keyCode = 13; 

Anahtar olayı ayarlamak için kullanılan kod budur (tuşlamayı ve anahtarlamayı da denedim).

Bu, Google'da arama yaparken işe yaramaz. Bir metin yazıp giriş alanında $("[name=q]").trigger(e) olayını tetiklerseniz hiçbir şey olmaz.

"Uygun" giriş etkinliğini simüle etmek için google'ı kullanıyorum. Skype web istemcisini otomatikleştirmek için js kullanmayı umuyorum.

Herhangi bir javascript kullanarak gerçek bir tuşa basma simüle etmek mümkün olup olmadığını bilen var mı? Selenide'nin pressEnter()'un çalıştığını gördüm ama webdriver kullanıyor, bu yüzden alakalı değil.

Ben de bu sorgu elemanı üzerine) (.submit arayarak teslim edilebilir ama bu Peşinde olduğum şey bu değil farkındayım

var dispatchKeyboardEvent = function(target, initKeyboradEvent_args) { 
    var e = document.createEvent("KeyboardEvents"); 
    e.initKeyboardEvent.apply(e, Array.prototype.slice.call(arguments, 1)); 
    target.dispatchEvent(e); 
}; 

dispatchKeyboardEvent($("[name=q]"), 'keypress', true, true, null, 'h', 13, ''); 

Sidenote tetikleme yerli js olayı denedim.

+1

Hiçbir şey olmuyor mu? Hata konsolunun jQuery'nin tanımlanmadığından şikayet etmesini beklerdim. (Sen betiği çalıştırmadan önce zaten tanımlanmamış sürece, bu durumda ilk dört satır anlamsızdır). – Quentin

+0

hata yok, çoğu jQuery aramaları gibi öğeyi tükürür – Bobbzorzen

+0

jquery ile bağlı slime öğe var mı? –

cevap

1

Kodda document kodundan bahsederken, kod hazır olduğunda kod yürütülmelidir.

jQuery yüklendiğinde olay tetikleme kodu yürütün, böylece kodu script.onload geri aramada yazın.

gibi, here söz document.body için script eleman eklemeden önce geri arama takmak ve ayrıca srcscript için eleman atamadan önce.

demo Çalışma: kodunuzu tek seferde arama sorgu dizesi belirlerse jsFiddle

+0

Emin değilim bir şey eksik ama olay jqery komut dosyası yüklendikten sonra elle benim el ile yapılır. Ayrıca, örneğinizi google.com üzerinde test ettim ve kodunuzla uygulanan etkinlik listelerini tetiklemesine rağmen, tarayıcı giriş anahtarını kaydetmedi ve aramayı gerçekleştirmedi. – Bobbzorzen

+0

Güvenlik nedeniyle tarayıcılar, öğelerin sahte etkinliklere izin vermez. Ancak [sendKeys] 'i (http://bililite.com/blog/2015/01/14/rethinking-fn-sendkeys/), olayları göndermek için jQuery eklentisini kullanabilirsiniz. –

+0

Denedim, işe yaramıyor. Orijinal postada açıklanan varsayılan keyevent gönderimiyle aynı şekilde çalışır. bahşiş için teşekkürler – Bobbzorzen

0
<select id="ss"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 

$('#ss').keypress(function(e){ 
    var p = e.keyCode; 
    alert(p); 
    if(p==13){ 
     alert('enter was pressed'); 
    } 
}); 
+0

Daha önce de belirtildiği gibi, olayları dinlemek için bir yol aramıyorum, webdrivers kullanarak selenide tarafından tetiklenen olaylar gibi olayları gerçekçi bir şekilde simüle etmek için bir yol arıyorum. Yine de teşekkürler – Bobbzorzen

1

, alanın değişikliği olayı dinlemek ve işlevini çağırın. Definitive way to trigger keypress events with jQuery

den

$("#searchBarId").on("change", function(){ 
    var e = jQuery.Event("keydown"); 
    e.which = 13; // # Enter key code value 
    $("input").trigger(e) 
}); 

Cevap Bu sorununuzu çözüyor mu?

+0

Ne yazık ki, benim soruma göre açıklandığı gibi zaten olayları göndermek için bu yöntemi denedim ve işe yaramıyor. – Bobbzorzen