मैं पृष्ठ वस्तु पैटर्न सेलेनियम ने सुझाव दिया अनुसरण कर रहा हूँ, लेकिन मैं कैसे एक पृष्ठ के लिए एक और अधिक विशिष्ट WebElement पैदा करेगा। विशेष रूप से, हमारे पास हमारे पृष्ठों पर टेबल हैं और मैंने टेबल की विशिष्ट पंक्तियां प्राप्त करने के लिए कुछ सहायक कार्यों को लिखा है, एक तालिका की सामग्री वापस कर सकते हैं,सेलेनियम वेबड्राइवर वेबलेमेंट बढ़ाएं?
वर्तमान में, यहां एक पृष्ठ वस्तु का एक स्निपेट है जिसे मैंने बनाया है एक मेज:
public class PermissionsPage {
@FindBy(id = "studyPermissionsTable")
private WebElement permissionTable;
@FindBy(id = "studyPermissionAddPermission")
private WebElement addPermissionButton;
...
}
तो, मुझे क्या करना चाहते हैं कि permissionsTable अधिक अनुकूलित WebElement उन तरीकों कि मैंने पहले बताया के कुछ है कि होना चाहिए।
उदाहरण के लिए:
public class TableWebElement extends WebElement {
WebElement table;
// a WebDriver needs to come into play here too I think
public List<Map<String, String>> getTableData() {
// code to do this
}
public int getTableSize() {
// code to do this
}
public WebElement getElementFromTable(String id) {
// code to do this
}
}
मुझे आशा है कि इस अर्थ है कि मैं क्या समझाने की कोशिश कर रहा हूँ बनाता है। मुझे लगता है कि मैं जो खोज रहा हूं वह इस कस्टम वेबलेमेंट को टेबल-विशिष्ट की कुछ अतिरिक्त सामग्री करने का एक तरीका है। एनोटेशन आधार पर पृष्ठ पर एक पृष्ठ को यह कस्टम तत्व जोड़ें और webelements रास्ता सेलेनियम तारों का लाभ उठाएं।
क्या यह संभव है? और यदि हां, तो क्या कोई जानता है कि यह कैसे किया जा सकता है?
इस तरह मैंने इसे भी किया, लेकिन थोड़ा अलग .. मैंने एक अमूर्त वर्ग बनाया जो वेब इंटरफेस इंटरफेस को विस्तारित एक कस्टम इंटरफ़ेस लागू करता है। अंतिम कक्षा में अमूर्त और अतिरिक्त तरीकों में सभी विधियों को लोड किया गया। और मेरे आमंत्रण हैंडलर में, मैंने विधि को रोक दिया और इसे कमजोर वस्तु के तरीकों पर पुनर्निर्देशित किया यदि उन्हें कमजोर पड़ने वाले इंटरफ़ेस में घोषित किया गया हो; अन्यथा, मैंने तत्व को कस्टम वेबलेमेंट रैपर के साथ लपेट लिया; और विधि का आह्वान किया। पुनश्च। ब्लॉग के लिए +1 :) धन्यवाद! – rrw