2016-04-09 19 views
1

Selenium Chrome sürücüsünde tuş bileşimine basmam gerekiyor. Eylem, metin kutusuna veya bir düğmeye tıklayarak test göndermiyor.Selenium Chrome Sürücü, tuşa basın kombinasyonlarını pencereye gönder

Aslında herhangi bir web öğesine anahtar göndermeyle ilgilenmiyorum. Örneğin, komut + R (Mac OS'de yeniden yükle) yapmak istiyorum.

public static void keyPressCombnaiton() { 
    Actions action = new Actions(browser); 
    action.keyDown(Keys.COMMAND) 
      .sendKeys("r") 
      .keyUp(Keys.COMMAND) 
      .build() 
      .perform(); 
} 

ben arama ve hiç şans var sadece çalışırken saatlerce vardır:

Kodum şudur (Yeniden Yüklenmesi açıklama, benim nihai hedefi için sadece bir örnektir).

Herhangi bir yardım için teşekkür ederiz!

cevap

1

WebDriver spec is element-focussed ve pencereye, ekrana, tarayıcı kromuna - yalnızca öğelere anahtarlar göndermek için herhangi bir yöntem tanımlamaz.

Cmd için Selenyum Actions sınıfının kullanılması - Ar Firefox'ta Mac üzerinde işleri (45), ancak sadece ön planda çalıştırdığınızda - ve görünüşte hiç de Chrome'da. Muhtemelen bu, uzak Klavye uygulamasının uygulamalarındaki farklılıklara bağlı, muhtemelen güvenmemesi en iyisi.


bir sayfayı yeniden istemek için en etkili yolu olan ve olmayan platforma özel yolu

JavaScript kullanıyor:
((JavascriptExecutor) driver).executeScript("document.location.reload(true)"); 

Ancak, JavaScript "sadece anahtarlarını gönder" izin vermez.

Robot robot = new java.awt.Robot(); 
robot.keyPress(KeyEvent.VK_META); // See: http://stackoverflow.com/a/15419192/954442 
robot.keyPress(KeyEvent.VK_R); 
robot.keyRelease(KeyEvent.VK_R); 
robot.keyRelease(KeyEvent.VK_META); 

Bu "körlemesine" hangisi pencere/bileşenleri, ekranda aynı anda olan anahtarı kombinasyonları gönderir eğer öyleyse tarayıcı penceresi:


diğer tek yolu Java AWT Robot sınıfında yoluyladır gizlenmiş veya en aza indirilmiş, bu işe yaramaz.

+0

Yardımlarınız için teşekkürler. 1. Robotun çalışmasına izin vermek için mevcut odak pencerem Chrome sürücüsü penceresi olmalıdır. 2. Benim amacım sayfayı yenilemiyor, bir tuş kombinasyonu yapıyor (hala iyi biliniyor). 3. Yukarıdaki işlemi yapmak için bir Selenyum yolu var mı? – Bowen

+0

Evet. Belki de bunu açıklığa kavuşturmalıyım, gerçekten de sadece sayfayı yeniden yüklemek istediğinizi varsayarsak, JavaScript yaklaşımını tercih etmenin başka bir nedenidir ve Cmd-R sadece bir örnektir. –

+0

Bunu başarmak için bir Selenyum yolu var mı? – Bowen

İlgili konular