python - "ওয়েবড্রাইভার ধারণা: বার্তা: সংযোগ প্রত্যাখ্যান" কীভাবে ঠিক করবেন?




selenium firefox (2)

এখানে কোন সংযোগ অস্বীকার করা হয়েছে? ত্রুটি বার্তার অর্থ কী

পাইথন ওয়েবড্রাইভার এপিআই এবং আপনার ফায়ারফক্স ওয়েব ব্রাউজারের মধ্যে সংযোগ। ভাল, সংযোগটি নিজেই নয়, ওয়েবড্রাইভার প্রেরিত একটি একক অনুরোধ ব্রাউজার দ্বারা "প্রত্যাখ্যান" করা হয়েছিল। নোট করুন যে এটি JSON ওয়্যার প্রোটোকল - এইচটিটিপি ওভার জেএসওএন এর মাধ্যমে কাজ করে।

আমি কীভাবে এই ত্রুটিটি সম্ভবত সমাধান করতে পারি?

সাধারণত, এর মতো ত্রুটির ক্ষেত্রে, সর্বাধিক সাধারণ কারণ হ'ল একটি সামঞ্জস্যের সমস্যা । অন্য কথায়, আমি সন্দেহ করি যে আপনার geckodriver সংস্করণ ফায়ারফক্স 57 এর জন্য খুব পুরানো geckodriver সর্বশেষতম স্থিতিশীল সংস্করণে আপগ্রেড করুন (বর্তমানে GeckoDriver )।

বিভিন্ন নন-পাবলিক ওয়েবপৃষ্ঠাগুলি পরীক্ষা করতে আমি খুব জটিল সেটআপ ব্যবহার করছি। আমি docker ইমেজের মধ্যে python-selenium পরীক্ষা চালাতে jenkins ব্যবহার করি। এইভাবে, আমি জেনকিন্স পরিবেশের থেকে সম্পূর্ণ স্বাধীন এবং আমার নিজস্ব পরিবেশ তৈরি করতে পারি। এই পরিবেশে আমি নিম্নলিখিত সফ্টওয়্যার ইনস্টল করা আছে:

  • ফায়ারফক্স: 57.0.1
  • গেকোড্রাইভার: 0.18.0
  • নাসকেটস: 1.3.7
  • সেলেনিয়াম: 3.8.0

সেলেনিয়াম পরীক্ষাগুলি নিম্নলিখিতভাবে WebDriver তৈরি করে:

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.dir", self.downloadpath)
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.useDownloadDir", True)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("pdfjs.disabled", True)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",
"application/force-download, image/png, text/html, text/plain, "
"image/tiff, text/csv, application/zip, application/octet-stream")
profile.set_preference("browser.download.manager.alertOnEXEOpen", False)
profile.set_preference("browser.download.manager.focusWhenStarting", False)
profile.set_preference("browser.helperApps.alwaysAsk.force", False)
profile.set_preference("browser.download.manager.alertOnEXEOpen", False)
profile.set_preference("browser.download.manager.closeWhenDone", True)
profile.set_preference("browser.download.manager.showAlertOnComplete", False)
profile.set_preference("browser.download.manager.useWindow", False)
profile.set_preference("services.sync.prefs.sync.browser.download.manager.showWhenStarting",
False)
self.driver = webdriver.Firefox(profile, log_path = logfile)

যেখানে self.downloadpath এবং self.downloadpath ডকার সেটআপের দুটি বৈধ পাথ self.downloadpath

পুরো টেস্ট স্যুইটে independ টি স্বতন্ত্র পরীক্ষার মামলা রয়েছে, প্রত্যেকটির উপরের মত একই সেটআপ রয়েছে। এগুলি সাধারণত সমস্যা ছাড়াই সূক্ষ্মভাবে চালিত হয় এবং সম্পূর্ণ হয়।

কিন্তু পরীক্ষাগুলি বা সাধারণ সেটআপে কোনও পরিবর্তন ছাড়াই একটি পরীক্ষা কখনও কখনও নিম্নলিখিত ত্রুটি বার্তায় ব্যর্থ হয়:

  File "/root/tests/bsp_usecase_tests/tools/basicsuite.py", line 210, in set_driver_firefox
    self.driver = webdriver.Firefox(profile, log_path = logfile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 158, in __init__
    keep_alive=True)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response
    raise exception_class(message, screen, stacktrace)
WebDriverException: Message: connection refused

আমার দুটি প্রশ্ন আছে:

  1. এখানে কোন সংযোগ অস্বীকার করা হয়েছে? ত্রুটি বার্তার অর্থ কী
  2. আমি কীভাবে এই ত্রুটিটি সম্ভবত সমাধান করতে পারি?

সংযোজন :

  • আমি যখন webdriver.Firefox লাইনের ঠিক আগে webdriver.Firefox time.sleep(10) ব্যবহার করি তখন ত্রুটিটি আর প্রদর্শিত হয়নি। লুডটি বাদ দিয়ে কি আমি কিছুক্ষণ চেষ্টা করব?

আপনি যে ত্রুটিটি দেখছেন তা হ'ল:

WebDriverException: Message: connection refused

ডকুমেন্টেশন অনুযায়ী ওয়েবড্রাইভার এক্সসেপশনটি বেস ওয়েবড্রাইভার ব্যতিক্রম যা নিম্নরূপ:

exception selenium.common.exceptions.WebDriverException(msg=None, screen=None, stacktrace=None)

সুতরাং connection is refused here অর্থ হ'ল Selenium আপনি যে সংযোগটি স্থাপন করতে চান সেটি স্থাপন করতে অক্ষম:

self.driver = webdriver.Firefox(profile, log_path = logfile)

সম্ভাব্য সমাধানটি logfile সম্পূর্ণ নাম এবং logfile logical location সাথে Project Level ( Project Level থেকে) প্রদান করা হবে:

self.driver = webdriver.Firefox(firefox_profile=profile, log_path='./Log/geckodriver.log')

এখানে আপনি একটি অনুরূপ Discussion খুঁজে পেতে পারেন

আবার, যেমনটি আপনি উল্লিখিত ছিলেন When I used a time.sleep(10) just before the webdriver.Firefox line, the error did not show up anymore , তাই আমি ধরে নিই যে এর আগে GeckoDriver এবং Firefox Browser ক্লায়েন্ট সক্রিয় ছিল of সুতরাং, একইভাবে @ ফ্লোরেন্ট বি হিসাবে উল্লেখ করেছেন যে আপনাকে আপনার স্ক্রিপ্টটি রেস অ্যারাউন্ড কন্ডিশনের মুখোমুখি করতে হবে যা নীচের যে কোনও একটি থেকে বেরিয়ে আসতে পারে:

  • পূর্ববর্তী অধিবেশনটি এখনও প্রকাশিত হয়নি এমন নতুন অধিবেশনে একই লগফিল অ্যাক্সেস করা হচ্ছে।
  • আগের অধিবেশনটি এখনও প্রকাশিত হয়নি এমন নতুন অধিবেশন দ্বারা GeckoDriver বা Marionette দ্বারা একই পোর্ট নম্বর অ্যাক্সেস করা হচ্ছে।
  • সিপিইউতে অ্যাক্সেসের অভাব
  • শারীরিক স্মৃতি অভাব
  • অদলবদল স্মৃতি অভাব
  • ডিস্ক ক্যাশের অভাব
  • নেটওয়ার্ক ব্যান্ডউইথের অভাব
  • Docker Image মেমরির বাইরে চলে গেল

এখানে আপনি একটি অনুরূপ Discussion খুঁজে পেতে পারেন।

উল্লিখিত কারণগুলি অনুসারে আপনাকে কয়েকটি পদক্ষেপ অনুসরণ করতে হবে:

  • সর্বদা Selenium-Python ক্লায়েন্ট , GeckoDriver WebDriver variant ( GeckoDriver ) এবং Web Browser ( Firefox Browser ) এর সর্বশেষ প্রকাশিত সংস্করণ ব্যবহার করুন
  • tearDown() পদ্ধতিতে সর্বদা প্রস্থান () ব্যবহার করুন যাতে webdriver এবং webclient উভয়ই সঠিকভাবে ধ্বংস হয়।
  • আপনার Test Suite কার্যকর করার আগে এবং পরে আপনার IDE থেকে প্রকল্প কর্মক্ষেত্রটি Clean করুন।
  • আপনার Tests কার্যকর করার আগে এবং পরে ব্রাউজার ক্যাশে Clear করুন
  • বাসি rust_mozprofile directories সহ ওএসের কাজগুলি মুছতে নিয়মিত rust_mozprofile directories সরঞ্জাম ব্যবহার করুন।




geckodriver