पायथन के साथ विंडोज़ पर सेलेनियम वेबड्राइवर का उपयोग करके एक स्क्रीनशॉट लेते समय, स्क्रीनशॉट सीधे प्रोग्राम के पथ पर सहेजा जाता है, क्या .png फ़ाइल को किसी विशिष्ट निर्देशिका में सहेजने का कोई तरीका है?वेबड्राइवर स्क्रीनशॉट
उत्तर
उपयोग driver.save_screenshot('/path/to/file')
या driver.get_screenshot_as_file('/path/to/file')
:
import selenium.webdriver as webdriver
import contextlib
@contextlib.contextmanager
def quitting(thing):
yield thing
thing.quit()
with quitting(webdriver.Firefox()) as driver:
driver.implicitly_wait(10)
driver.get('http://www.google.com')
driver.get_screenshot_as_file('/tmp/google.png')
# driver.save_screenshot('/tmp/google.png')
मैं समझता हूँ कि आप अजगर में एक जवाब के लिए देख रहे हैं, लेकिन यहाँ कैसे एक गहरे लाल रंग का में यह करना होगा ..
http://watirwebdriver.com/screenshots/
कि यदि है केवल वर्तमान निर्देशिका में ही सहेजकर काम करता है .. मैं पहले छवि को एक चर को आवंटित करता हूं और फिर उस चर को एक पीएनजी फ़ाइल के रूप में डिस्क में सहेजता हूं।
जैसे:
image = b.screenshot.png
File.open("testfile.png", "w") do |file|
file.puts "#{image}"
end
जहां ख webdriver द्वारा इस्तेमाल किया ब्राउज़र चर रहा है। मेरे पास "File.open" में एक पूर्ण या सापेक्ष पथ प्रदान करने के लिए लचीलापन है, इसलिए मैं छवि को कहीं भी सहेज सकता हूं।
हाँ, हम webdriver कोड नीचे
उपयोग अजगर का उपयोग कर यदि आप अजगर webriver.it में काम कर बहुत सरल है .png के स्क्रीनशॉट विस्तार पाने के लिए एक रास्ता नहीं है।
driver.save_screenshot('D\folder\filename.png')
इस सूत्र (जावा के लिए एक ही प्रश्न) से प्रेरित होकर: Take a screenshot with Selenium WebDriver
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.google.com/')
browser.save_screenshot('screenie.png')
browser.quit()
ज़रूर अभी वास्तविक नहीं है, लेकिन मैं भी इस मुद्दे का सामना किया और मेरे रास्ते: 'save_screenshot' ऐसा लगता है अंतरिक्ष के साथ फ़ाइलों को एक ही समय में बनाने में कुछ परेशानी है क्योंकि मैंने ओवरराइड से बचने के लिए फ़ाइल नामों में यादृच्छिकरण जोड़ा है।
यहाँ मैं विधि मिला व्हाइटस्पेस की मेरी फ़ाइलनाम (How do I replace whitespaces with underscore and vice versa?) साफ करने के लिए:
def urlify(self, s):
# Remove all non-word characters (everything except numbers and letters)
s = re.sub(r"[^\w\s]", '', s)
# Replace all runs of whitespace with a single dash
s = re.sub(r"\s+", '-', s)
return s
तो
driver.save_screenshot('c:\\pytest_screenshots\\%s' % screen_name)
जहां
def datetime_now(prefix):
symbols = str(datetime.datetime.now())
return prefix + "-" + "".join(symbols)
screen_name = self.urlify(datetime_now('screen')) + '.png'
driver.save_screenshot("path to save \\screen.jpeg")
आप के लिए समारोह नीचे का उपयोग कर सकते सापेक्ष निरपेक्ष पथ के रूप में पथ लिपि में जोड़ने के लिए एक अच्छा विचार नहीं है
आयात
import sys, os
उपयोग के रूप में नीचे दिए गए कोड:
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
screenshotpath = os.path.join(os.path.sep, ROOT_DIR,'Screenshots'+ os.sep)
driver.get_screenshot_as_file(screenshotpath+"testPngFunction.png")
सुनिश्चित करें कि आप फ़ोल्डर बना कर जहां .py फ़ाइल मौजूद है ।
os.path.join
आपको क्रॉस-प्लेटफार्म जैसे यूनिक्स और विंडोज़ में अपनी स्क्रिप्ट चलाने की भी रोकता है। यह रनटाइम पर ओएस के अनुसार पथ विभाजक उत्पन्न करेगा। os.sep
जावा
File.separtor
जैसा है
- 1. वॉटर-वेबड्राइवर ब्लैक स्क्रीनशॉट
- 2. वेबड्राइवर
- 3. सेलेनियम 2 (वेबड्राइवर): स्क्रीनशॉट लेना एक ब्लैक इमेज
- 4. स्क्रीनशॉट
- 5. वेबड्राइवर
- 6. वेबड्राइवर
- 7. वेबड्राइवर
- 8. वेबड्राइवर
- 9. आईलाइन स्क्रीनशॉट
- 10. स्क्रीनशॉट लें
- 11. वेबड्राइवर बनाम वेबड्राइवर में जुनीट प्रारूप
- 12. वेबड्राइवर - जावा
- 13. सेलेनियम वेबड्राइवर
- 14. सेलेनियम वेबड्राइवर
- 15. सेलेनियम-वेबड्राइवर
- 16. सेलेनियम वेबड्राइवर
- 17. सेलेनियम वेबड्राइवर
- 18. सेलेनियम वेबड्राइवर
- 19. सेलेनियम वेबड्राइवर
- 20. वेबड्राइवर फ़ायरफ़ॉक्स
- 21. सेलेनियम वेबड्राइवर
- 22. वेबड्राइवर: क्रोम
- 23. सेलेनियम वेबड्राइवर
- 24. क्या वेबड्राइवर
- 25. जावा वेबड्राइवर
- 26. सेलेनियम वेबड्राइवर
- 27. वॉटर-वेबड्राइवर
- 28. selenium.wait_for_condition वेबड्राइवर
- 29. सेलेनियम वेबड्राइवर
- 30. सेलेनियम वेबड्राइवर