Öğe, "kalıcı anlaşmalar" adı verilen IE sürücüsünün bir özelliği nedeniyle yanıp sönüyor. Bu özellik şüpheli bir değerdir, ancak SendMessage
API'sini kullanırken Beyin (tarayıcı değil, sürücü) responds to WM_MOUSEMOVE
messages beyin ölü yolundan dolayı gereklidir.
Birkaç seçeneğiniz var. Aşağıdaki gibi kodu kullanarak kapalı kalıcı fareyi üzerine kapatabilirsiniz: Bu Yayının üzerine çalıştığınızda fiziksel fare imleci ekranda olduğu kaprislerine almanıza neden olacağı olsa
InternetExplorerOptions options = new InternetExplorerOptions();
options.EnablePersistentHover = false;
IWebDriver driver = new InternetExplorerDriver(options);
, farkında olun. Bu kabul edilebilir değilse, alabileceğiniz bir couple of other approaches var. İlk olarak, sürücünün yalnızca sentezlenmiş JavaScript olaylarına güvenmesine neden olacak "yerel olaylar" olarak adlandırılanları kapatabilirsiniz. Bu yaklaşımın, yalnızca fare olaylarını sentezlemek için JavaScript'e dayanması nedeniyle kendi tuzakları vardır.
InternetExplorerOptions options = new InternetExplorerOptions();
options.EnableNativeEvents = false;
IWebDriver driver = new InternetExplorerDriver(options);
Son olarak, daha doğru SendInput
API kullanan kod varsayılan SendMessage
, Windows API kullanarak göç edebilecek. Bu, RequireWindowFocus
özelliği ile yapılır. Bunun dezavantajı, fare girişinin sistemde çok düşük bir seviyede enjekte edilmesidir; bu, IE penceresinin sistemde ön plan penceresi olmasını gerektirir.
Son bir not olarak, bu özelliklerin tümünü bir kerede ayarlamaya çalışmayın; Bir yaklaşım seçin ve onunla sopa. Bunların birçoğu karşılıklı olarak münhasırdır ve aralarındaki etkileşim tanımlanmamıştır.
Hangi sürümü selenyum kullanıyorsunuz? – Karthikeyan
IE11 hala bu sorundan muzdarip. Neyse ki, aşağıdaki çözüm hala çalışıyor :). –