मैं कैसे सेलेनियम WebDriver एक विशेष तत्व के लिए स्क्रॉल करने के लिए स्क्रीन पर इसे पाने के लिए मिलता है उपयोग करने के साथ तत्व के लिए स्क्रॉल करने के लिए। मैंने कई अलग-अलग विकल्पों की कोशिश की है लेकिन कोई भाग्य नहीं है। क्या यह सी # बाइंडिंग में काम नहीं करता है?कैसे सेलेनियम WebDriver सी #
मैं इसे किसी विशेष स्थान पर ((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 150)");
पर जा सकता हूं लेकिन मैं हर बार सटीक स्थान दिए बिना इसे अलग-अलग तत्वों में भेजने में सक्षम होना चाहता हूं।
public IWebElement Example { get { return Driver.FindElement(By.Id("123456")); } }
पूर्व 1) ((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", Example);
पूर्व 2) ((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollBy(Example.Location.X", "Example.Location.Y - 100)");
जब मैं इसे देख, यह नीचे पृष्ठ तत्व के लिए कूद नहीं है, और अपवाद स्क्रीन बंद किया जा रहा है तत्व से मेल खाता है ।
अद्यतन: मैं जोड़ा एक bool पूर्व = Example.Exists(); इसके बाद और परिणामों की जांच की। यह अस्तित्व (इसकी सत्य) है। इसकी प्रदर्शित नहीं (के रूप में अपनी अभी भी गुप्त रूप में यह तत्व में नहीं ले जाया गया है) इसकी चयनित नहीं ??????
किसी सफलता By.ClassName देख रहा है। किसी को भी पता है अगर वहाँ ग # बाइंडिंग में इस By.Id कर के साथ एक समस्या है?
शायद तुम, जब तक अपवाद गायब हो जाता है अनुकरण "तीर डाउन" keypresses कोशिश कर सकते हैं। मुझे पता है कि दीवार टूटने तक यह चलने वाली दीवार है, लेकिन अगर आप इसे किसी भी तरह से काम करना चाहते हैं तो यह एक समाधान हो सकता है ?! – krizz
आप एक चीज के साथ प्रयास कर सकते हैं, ExpectedConditions.visibilityOfElement विधि का उपयोग कर सकते हैं और इसे लूप के दौरान एक स्थिति के रूप में रख सकते हैं और लूप स्क्रॉल में कुछ कहते हैं 100, 100 समन्वय। –
जावास्क्रिप्ट कहने से पहले, क्या आप सुनिश्चित हैं कि WebDriver को आपका तत्व मिला है? – Jordan