12

देता है मैं एक परीक्षण डीबग कर रहा हूं और पाया कि प्रोटैक्टर सही तत्व ढूंढ रहा है लेकिन स्थान (x और y) स्थान से लिंक नहीं है वह बटन जो पाया गया है। जब इस तत्व पर क्लिक कहा जाता है तो यह गलत जगह पर चूक जाता है और परीक्षण विफल होने के कारण क्लिक करता है।प्रोटैक्टर परीक्षण (सेलेनियम और कोणीय साइट पर क्रोम का उपयोग) गलत x और y बिंदु

एक नोट के रूप में ये परीक्षण अन्य मशीनों पर ठीक चलते प्रतीत होते हैं, ऑपरेटिंग सिस्टम होने पर केवल अंतर ही विंडोज़ 10 पर विफल रहता है?

क्या कोई जानता है कि प्रोटैक्टर/सेलेनियम तत्व के स्थान को कैसे निर्धारित करता है।

अग्रिम धन्यवाद।

जैक रीव्स

संपादित करें:

टिप्पणी के बाद का अनुरोध कुछ उदाहरण:

पेज वस्तु प्राप्त करने के लिए:

browser.get('examplePageAddress') 

हैडर कि बटन स्थित है पाने के लिए:

var elem = element.all(by.className('header')).get(0) 

div कि बटन हैडर के भीतर स्थित है पाने के लिए:)

var div = elem.element(by.name('examplename')) 

वास्तविक परीक्षण में एक सरल button.click वास्तविक बटन

var button = element(by.name('exampleButtonName')) 

प्राप्त करने के लिए (कहा जाता है और वह यह है कि बटन लगभग 50px से गुम है।

कंसोल पर डिबगिंग और लिखने के माध्यम से मैंने पुष्टि की है कि सही तत्व का चयन किया गया है [.getInnerHTML()] का उपयोग करके और निर्धारित बटन के स्थान को मापकर यह लगभग 50px अलग है [used .getLocation() x निर्धारित करने के लिए और y चांदा]

+0

आप एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण बनाना सकते हैं? साथ ही, कृपया दिखाएं कि आप स्थान का निर्धारण कैसे कर रहे हैं। धन्यवाद। – alecxe

+2

क्या तत्व में एनीमेशन है, या उस पर कोई सीएसएस है जो सामान्य से बाहर प्रतीत हो सकता है? – Brine

+0

ऐसा नहीं लगता है, जैसा कि मैंने कहा था कि यह काम करता है जब यह परीक्षण अन्य मशीनों पर चलाया जाता है जो अजीब चीज है! बटन स्वयं स्वयं के एक div में है और यह div का स्थान गलत है: S – JackFrost

उत्तर

5

द्वारा लौटाए गए वास्तविक परीक्षण में एक सरल button.click() कहा जाता है और वह है क्या के बारे में 50px

द्वारा करने के लिए कदम बटन याद आ रही है इस मामले में, है तत्व पहले और फिर एक क्लिक करें:

browser.actions().mouseMove(button).click().perform(); 

या, scroll into view तत्व की:

browser.executeScript("arguments[0].scrollIntoView();", button.getWebElement()); 
button.click(); 

ध्यान दें कि getLocation() ही दृश्य क्षेत्र पर निर्भर करता है - व्यूपोर्ट कि एक ब्राउज़र निर्धारित करता है। यह विभिन्न ब्राउज़रों और विभिन्न ऑपरेटिंग सिस्टम में अलग हो सकता है।यह भी देखें:

और, यदि आप वास्तव में viewport आकार प्राप्त कर सकते हैं और ब्राउज़रों और प्रणालियों पर इसकी तुलना आप अपने परीक्षण को अंजाम - मैं बहुत यकीन है कि आप विभिन्न मूल्यों मिल जाएगा , देखें:

तुम भी क्या 0 में लग सकता है आपके मामले मेंरिटर्न:

Element.getBoundingClientRect() विधि एक तत्व के आकार और व्यूपोर्ट में अपनी स्थिति देता है।

browser.executeScript("return arguments[0].getBoundingClientRect();", button.getWebElement()).then(function (rect) { 
    console.log(rect.left); 
    console.log(rect.top); 
}); 
+0

हे वास्तव में काम पर व्यस्त था, आपको अंक देने से पहले इसे आजमाने की उम्मीद कर रहा था, लेकिन यह ऑटो समाप्त हो गया था, इसलिए अनुमान लगाया गया कि आप उन्हें प्राप्त कर सकते हैं :) इनपुट के लिए धन्यवाद, अगर मैं इसे हल करता हूं तो मैं आपको बता दूंगा! – JackFrost

संबंधित मुद्दे