मैं nesetests के साथ सेलेनियम वेबड्राइवर परीक्षण चला रहा हूँ। जब भी नोसेटेट विफल हो जाए तो मैं एक स्क्रीनशॉट कैप्चर करना चाहता हूं। वेबड्राइवर, पायथन या नोसेटेट सुविधाओं का उपयोग करके, मैं इसे सबसे प्रभावी तरीके से कैसे कर सकता हूं?यदि मेरे नोसेटेट विफल हो जाते हैं तो मैं स्क्रीनशॉट कैप्चर कैसे करूं?
उत्तर
अजगर में आप नीचे दिए गए कोड का उपयोग कर सकते हैं:
driver.save_screenshot('/file/screenshot.png')
सबसे पहले, webdriver आदेश दिया गया है:
driver.get_screenshot_as_file(screenshot_file_path)
मैं नाक में एक विशेषज्ञ नहीं हूँ (वास्तव में यह पहली बार है मैंने इसमें देखा है), हालांकि मैं py.test
ढांचे का उपयोग करता हूं (जो समान है, हालांकि nose
आईएमएचओ से बेहतर है)।
अधिकतर आपको नाक के लिए "plugin" बनाना होगा जहां आपको हुक addFailure(test, err)
को लागू करना होगा जिसे "परीक्षण विफल होने पर बुलाया जाता है"।
इस addFailure(test, err)
में आप Test object से परीक्षण का नाम प्राप्त कर सकते हैं और फ़ाइल के लिए पथ उत्पन्न कर सकते हैं।
उस कॉल के बाद driver.get_screenshot_as_file(screenshot_file_path)
।
py.test
में मैं def pytest_runtest_makereport(item, call):
हुक के कार्यान्वयन के साथ अपनी प्लगइन बना देता हूं। अंदर मैं call.excinfo
का विश्लेषण करता हूं और यदि आवश्यक हो तो स्क्रीनशॉट बनाएं।
पर मैंने कोशिश की है, लेकिन मुझे testFase में addFailure() में उदाहरण नहीं मिल सकता है। क्या आप साझा कर सकते हैं कि यह कैसे संभव है (केवल परीक्षण नाम जानने के द्वारा, जो मुझे केवल उचित वर्ग में इंगित करता है, उदाहरण के लिए नहीं) – vvondra
मेरे समाधान
import sys, unittest
from datetime import datetime
class TestCase(unittest.TestCase):
def setUp(self):
some_code
def test_case(self):
blah-blah-blah
def tearDown(self):
if sys.exc_info()[0]: # Returns the info of exception being handled
fail_url = self.driver.current_url
print fail_url
now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S-%f')
self.driver.get_screenshot_as_file('/path/to/file/%s.png' % now) # my tests work in parallel, so I need uniqe file names
fail_screenshot_url = 'http://debugtool/screenshots/%s.png' % now
print fail_screenshot_url
self.driver.quit()
प्रश्न 'नाक' ढांचे के बारे में है, डिफ़ॉल्ट 'unittest' नहीं। –
"वेबड्राइवर, पायथन या नोसेटेट्स सुविधाओं का उपयोग करके" –
मुझे नहीं लगता कि "पायथन" का मतलब है "एक और ढांचे (जैसे unittest) का उपयोग करके" हालांकि, मैं गलत हो सकता हूं। –
शायद आप अलग तरह से अपने परीक्षण की स्थापना की है, लेकिन मेरे अनुभव में आप मैन्युअल रूप से कार्यक्षमता के इस प्रकार में निर्माण और विफलता के बिंदु पर यह दोहराना होगा। यदि आप सेलेनियम परीक्षण कर रहे हैं, संभावना है कि मेरे जैसे, आप find_element_by_ कुछ का उपयोग कर रहे हैं। मैं निम्नलिखित समारोह लिखा है मुझे बात के इस प्रकार से निपटने के लिए अनुमति देने के लिए:
def findelement(self, selector, name, keys='', click=False):
if keys:
try:
self.driver.find_element_by_css_selector(selector).send_keys(keys)
except NoSuchElementException:
self.fail("Tried to send %s into element %s but did not find the element." % (keys, name))
elif click:
try:
self.driver.find_element_by_css_selector(selector).click()
except NoSuchElementException:
self.fail("Tried to click element %s but did not find it." % name)
else:
try:
self.driver.find_element_by_css_selector(selector)
except NoSuchElementException:
self.fail("Expected to find element %s but did not find it." % name)
आपके मामले में, स्क्रीनशॉट कोड (self.driver.get_screenshot_as_file (screenshot_file_path)) self.fail से पहले जाना होगा।
इस कोड के साथ, हर बार जब आप एक तत्व के साथ बातचीत करना चाहते हैं, तो आप self.findelement ('चयनकर्ता', 'तत्व नाम')
- 1. वीबी - यदि वैकल्पिक तर्क प्रदान किए जाते हैं या नहीं तो मैं परीक्षण कैसे करूं?
- 2. स्क्रीनशॉट कैप्चर करें .NET
- 3. यदि मेरे पास पाइथन में यह स्ट्रिंग है, तो मैं इसे कैसे डीकोड करूं?
- 4. मेरे पर्ल परीक्षण 'उपयोग एन्कोडिंग' utf8'` के साथ क्यों विफल हो जाते हैं?
- 5. अजाक्स प्रमाणीकरण अनुरोध शीर्षलेख बार-बार विफल हो जाते हैं
- 6. बाएं शामिल हो जाते हैं
- 7. यदि आवश्यक फ्लैग मौजूद नहीं हैं तो संकलित विफल
- 8. यदि लिंक में एक से अधिक फ़ील्ड हैं तो आप लिंकक में कैसे शामिल हो जाते हैं?
- 9. नोसेटेट
- 10. मेरे कार्यात्मक परीक्षण क्यों विफल हो रहे हैं?
- 11. यदि स्ट्रिंग बराबर नहीं है तो मैं तुलना कैसे करूं?
- 12. यदि मैं किसी सरणी में सभी आइटम समान हैं तो मैं कैसे परीक्षण करूं?
- 13. प्रदर्शन काउंटर मेरे काम के लिए सही उपकरण हैं? यदि हां, तो मैं उनका उपयोग कैसे करूं?
- 14. स्क्रॉलिंग विंडो सामग्री को कैप्चर करें स्क्रीनशॉट
- 15. मैं कैप्चरमाउस या माउस का उपयोग कैसे करूं। मेरे सी # डब्ल्यूपीएफ एप्लिकेशन में कैप्चर करें?
- 16. मैं पायथन में सिगिनट कैप्चर कैसे करूं?
- 17. यदि आवश्यक हो तो WPF टूलटिप दिखाएं
- 18. क्या लैम्बडास इनलाइन हो जाते हैं?
- 19. पायटेस्ट: यदि कोई विफल हो गया है तो कक्षा में शेष परीक्षणों को कैसे छोड़ें?
- 20. यदि प्रतिपादन विफल रहता है तो क्या लोग अपना PHP कोड देख सकते हैं?
- 21. यदि मैं विंडोज पर हूं तो मैं सशर्त रूप से पर्ल मॉड्यूल का उपयोग कैसे करूं?
- 22. यदि यह गलती हो जाती है तो मैं स्वचालित रूप से एक डुप्लेक्स चैनल को फिर से स्थापित कैसे करूं?
- 23. यदि मेरी विधि में एकाधिक रूट एनोटेशन हैं तो मैं url_for का उपयोग कैसे करूं?
- 24. यदि कोई विज़िटर Google adwords से है तो कैप्चर करें
- 25. क्या परमाणु संचालन धीमे हो जाते हैं क्योंकि अधिक CPUs जोड़े जाते हैं?
- 26. छिपे हुए डेस्कटॉप का स्क्रीनशॉट कैप्चर करें
- 27. आरटीएल का पुन: संकलन - यदि संभव हो तो फिर कैसे?
- 28. यदि दावा विफल रहता है तो रणनीति क्या है
- 29. जब वे फोकस खो देते हैं तो जासूस ++ और विंडोज़ बंद हो जाते हैं
- 30. मैं एंड्रॉइड एप्लिकेशन से स्क्रीनशॉट कैसे अक्षम करूं?
इसी कहेंगे, लेकिन unittest के लिए: [कैसे केवल पर कोड निष्पादित करने के लिए पाइथन unittest2 के साथ परीक्षण विफलताओं?] (http://stackoverflow.com/q/12290336/55075) SO – kenorb