2012-01-13 12 views
17

मैं सेलेनियम से वेबड्राइवर और उनके संबंधित दस्तावेज में परिवर्तन से उलझन में हो सकता हूं। प्रलेखन में परीक्षण डिजाइन के बारे में एक खंड में Assert vs Verify जैसे AssertElementPresent का उपयोग करने की बात है। हालांकि वेबड्राइवर ट्यूटोरियल के माध्यम से जाने और परीक्षण सेटअप शुरू करने में यह पाइथन से उपलब्ध प्रतीत नहीं होता है। क्या मैं प्रलेखन में कुछ देख रहा हूं, क्या यह वेबड्राइवर पर लागू नहीं है, जो कि अजगर का उपयोग करने के लिए लागू नहीं है, क्या मुझे अजगर की क्षमताओं का उपयोग करना चाहिए और सेलेनियम आदि से कमांड को सत्यापित/सत्यापित नहीं करना चाहिए?पायथन और वेबड्राइवर के साथ Assert/VerifyElementPresent?

उत्तर

16

वेबड्राइवर ब्राउज़र चलाने के लिए एक लाइब्रेरी है। आप तत्वों का पता लगाने के लिए * find_element * विधियों का उपयोग करना चाहते हैं और फिर उनके खिलाफ स्थितियों पर जोर देते हैं।

उदाहरण के लिए, इस कोड को एक तत्व की सामग्री पर एक अभिकथन करता है:

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get('http://www.example.com') 
element = browser.find_element_by_tag_name('h1') 
assert element.text == 'Example Domains' 
browser.quit() 
  • टिप्पणी इस उदाहरण में एक नंगे ज़ोर के साथ शुद्ध अजगर है। पाइथन के अनजान जैसे टेस्ट फ्रेमवर्क का उपयोग करना बेहतर होता है, जिसमें अधिक शक्तिशाली दावे होते हैं।
+0

एक अलग सवाल होना चाहिए लेकिन यहां प्रासंगिक है: मैं यह कैसे कहूंगा कि एन तत्व पृष्ठ पर मौजूद नहीं है? – Priednis

+0

मेरा जवाब यहां मिला: http://sqa.stackexchange.com/questions/3481/quicker-way-to-assert-that-an-element-does-not-exist?rq=1 – Priednis

+0

मैं कुछ कोशिश करता हूं/find_element_by_tag_name कॉल के लिए NoSuchElementException ब्लॉक को छोड़कर, यदि तत्व नहीं मिला है, तो परीक्षण विफलता के बजाय एक अपवाद ERROR चिह्नित करेगा ... या इस असुविधा के बिना तत्व का दावा करने का कोई तरीका मौजूद है? –

6

सेलेनियम आरसी में, सत्यापन/कार्यवाही विधियां मौजूद हैं। वेबड्राइवर में, वे नहीं करते हैं। साथ ही, यह ध्यान रखना महत्वपूर्ण है कि सत्यापित और जोर क्या करता है और आपके परीक्षणों में उनकी भूमिका क्या है। सेलेनियम आरसी में, सत्यापन का प्रयोग आपके परीक्षण में चेक करने के लिए किया जाता है, भले ही यह पाठ, तत्व, या आपके पास हो। दूसरी ओर, जोर से परीक्षण विफल होने और रोकने का कारण बन जाएगा। आपके द्वारा संदर्भित लिंक में लाभ और लाभों पर चर्चा की जाती है।

वेबड्राइवर में प्रति कहने/सत्यापित करने की विधि नहीं हैं। परीक्षण स्वयं परीक्षण में किया जाता है। यदि आप कोरी के जवाब पर नज़र डालते हैं, तो वह तत्व के पाठ पर "जोर" करता है। यदि तत्व का पाठ 'उदाहरण डोमेन' नहीं है तो एक AssertionError उठाया जाएगा, प्रभावी रूप से आपके परीक्षण को विफल कर देगा। लेकिन एक सत्यापन के बारे में क्या? जैसा कि बताया गया है, वेबड्राइवर में कोई नहीं है। लेकिन आप अभी भी तुलना करके कुछ समकक्ष प्रदर्शन कर सकते हैं।

if element.text != u'Example Domains': 
    print "Verify Failed: element text is not %r" % element.text 

तो इस मामले में, आपका परीक्षण विफल नहीं होगा। लेकिन एक सत्यापन अभी भी होगा और stdout पर प्रिंट करेगा।

तो अंत में, यह एक बात है कि आप क्या असफल होना चाहते हैं। यह एक परीक्षण डिजाइन का अधिक है। उम्मीद है की यह मदद करेगा।

-1

जोर

driver= webdriver.Firefox() 

String x =driver.findElement(By.xpath("//*[@id='userNavLabel']")).getText(); 

System.out.println(x); 

//Assert.assertEquals(actual, expected) 

Assert.assertEquals("Anandan Aranganath", x); 
+1

सेलेनियम पायथन सवाल। जावा नहीं – bron

4

सत्यापित करें आपको लगता है कि जाँच करने के लिए निम्नलिखित समारोह का उपयोग करना चाहिए:

def is_element_present(self, how, what): 
    try: self.driver.find_element(by=how, value=what) 
    except NoSuchElementException as e: return False 
    return True 

कौन सा डिफ़ॉल्ट जब अजगर कोड के लिए निर्यात Selenium IDE द्वारा उत्पन्न होता है।

तो फिर तुम नीचे के रूप में तत्व पर जोर कर सकते हैं:

self.assertTrue(self.is_element_present(By.ID, "footer")) 
self.assertTrue(self.is_element_present(By.CSS_SELECTOR, "header.global-header")) 

ध्यान दें कि निम्नलिखित आयात By उपयोग करने के लिए आवश्यक है:

from selenium.webdriver.common.by import By 
0

एक और तरीका है इस प्रकार है:

from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get('http://www.testing.com') 
element = driver.find_element_by_xpath('xpath of the element').text 
assert element == 'Sample Text' 
driver.quit() 
संबंधित मुद्दे