$lang['tuto'] = "ट्यूटोरियल"; ?>$lang['tuto'] = "ट्यूटोरियल"; ?> GitHub क्रियांवर

GitHub क्रियांवर सेलेनियममधील DevToolsActivePort फाइल त्रुटीचे निराकरण करण्यासाठी Chrome वापरणे

GitHub क्रियांवर सेलेनियममधील DevToolsActivePort फाइल त्रुटीचे निराकरण करण्यासाठी Chrome वापरणे
GitHub क्रियांवर सेलेनियममधील DevToolsActivePort फाइल त्रुटीचे निराकरण करण्यासाठी Chrome वापरणे

CI/CD पाइपलाइनमधील Chrome चाचणी अपयशांवर मात करणे

मध्ये सेलेनियम चाचण्या चालू आहेत हेडलेस क्रोम वर GitHub क्रिया अखंड असावे. तरीही, अनेक विकसकांना निराशाजनक "DevToolsActivePort फाइल अस्तित्वात नाही" त्रुटीचा सामना करावा लागतो. हे घडते जेव्हा Chrome, एक किंवा दुसऱ्या कारणास्तव, CI वातावरणात योग्यरितीने सुरू करण्यात अयशस्वी होते.

एरर मेसेज सहसा सिग्नल करतो की क्रोम अनपेक्षितपणे क्रॅश होत आहे, जे सहसा जुळत नसल्याचा परिणाम असतो क्रोम आणि ChromeDriver चाचणी सेटअपमधील आवृत्त्या किंवा चुकीचे कॉन्फिगर केलेले पर्याय. बऱ्याच डेव्हलपर्सप्रमाणे, मला या आव्हानाचा सामना करावा लागला आहे, विशेषत: स्वयंचलित चाचण्या उपयोजित करताना सतत एकीकरण वातावरण

या सेटअपमध्ये, ChromeDriver आवृत्ती जुळत नसल्यासारखे सर्वात लहान चुकीचे संरेखन, चाचणी अंमलबजावणी थांबवू शकते, मौल्यवान वेळ आणि संसाधने खर्च करू शकतात. सुदैवाने, मूळ समस्या समजून घेतल्याने त्याचे निराकरण करणे खूप सोपे होते 🛠️.

या मार्गदर्शकामध्ये, आम्ही ही सामान्य त्रुटी टाळण्यासाठी आणि समस्यानिवारण करण्यासाठी व्यावहारिक पायऱ्यांमध्ये प्रवेश करू. क्रोम इंस्टॉलेशन स्पेसिफिकेशन्सपासून ते योग्य ड्रायव्हर इनिशिएलायझेशनपर्यंत, प्रत्येक वेळी सुरळीत चाचणी चालते याची खात्री करण्यासाठी तुम्हाला चरण-दर-चरण प्रक्रिया सापडेल. चला या समस्येचा सामना करूया आणि तुमच्या चाचण्या पुन्हा रुळावर आणूया!

आज्ञा वापराचे उदाहरण
CHROME_VERSION="117.0.5938.62" Chrome आणि ChromeDriver मधील विसंगती टाळण्यासाठी CI चाचण्यांदरम्यान ChromeDriver सुसंगतता सुनिश्चित करण्यासाठी आवश्यक असलेली Chrome आवृत्ती सेट करते.
MAJOR_VERSION=$(echo $CHROME_VERSION | cut -d '.' -f1) संपूर्ण Chrome आवृत्तीमधून प्रमुख आवृत्ती क्रमांक काढतो. हे ChromeDriver ची जुळणारी आवृत्ती डाउनलोड करण्यासाठी, सुसंगतता सुनिश्चित करण्यासाठी वापरले जाते.
LATEST_DRIVER=$(wget -qO- ...) निर्दिष्ट Chrome आवृत्तीसाठी नवीनतम सुसंगत ChromeDriver आवृत्ती आणते, ऑटोमेशन स्क्रिप्टमधील “DevToolsActivePort” त्रुटी टाळण्यासाठी आवश्यक.
if [ -z "$LATEST_DRIVER" ] ChromeDriver आवृत्ती व्हेरिएबल रिक्त आहे का ते तपासते, जे सुसंगत आवृत्ती आणण्यात त्रुटी दर्शवेल. ही स्थिती चाचणी अपयश टाळण्यासाठी फॉलबॅक लागू करण्यात मदत करते.
sudo dpkg -i $CHROME_DEB dpkg वापरून डाउनलोड केलेले Chrome पॅकेज स्थापित करते, जे GitHub क्रियांसारख्या Linux वातावरणात विशेषतः उपयुक्त आहे.
sudo rm -f /usr/local/bin/chromedriver पूर्वी स्थापित केलेले कोणतेही ChromeDriver हटवते. हे सुनिश्चित करते की नवीन स्थापनेदरम्यान कोणतेही आवृत्ती विरोधाभास नाही.
options.addArguments("--no-sandbox") Chrome सँडबॉक्सिंग वैशिष्ट्य अक्षम करते. हे CI वातावरणात विशेषतः महत्वाचे आहे, कारण सँडबॉक्सिंग Chrome ला हेडलेस मोडमध्ये सुरू होण्यापासून रोखू शकते.
options.addArguments("--disable-dev-shm-usage") /dev/shm वापर अक्षम करून उपलब्ध सामायिक मेमरी वाढवते, जे कंटेनर सारख्या मर्यादित मेमरी असलेल्या वातावरणात Chrome क्रॅश होण्यापासून रोखू शकते.
options.addArguments("--remote-debugging-port=9222") निर्दिष्ट पोर्टवर रिमोट डीबगिंग सक्षम करते. "DevToolsActivePort" त्रुटींना प्रतिबंधित करून, हेडलेस Chrome ला काही वातावरणात योग्यरित्या कार्य करण्यासाठी ही आवश्यकता आहे.
driver.quit() सर्व Chrome विंडो बंद करते आणि संसाधने मोकळी करून WebDriver सत्र समाप्त करते. संसाधन लीक टाळण्यासाठी आणि उपलब्ध मेमरी संपुष्टात येण्यापासून टाळण्यासाठी CI/CD पाइपलाइनमध्ये हे आवश्यक आहे.

CI मध्ये Chrome आणि ChromeDriver सेटअपसाठी तपशीलवार उपाय

वरील स्क्रिप्ट क्रोम आणि क्रोमड्रायव्हर दोन्ही स्थापित आणि कॉन्फिगर करण्यासाठी डिझाइन केल्या आहेत GitHub क्रिया वातावरण, विशेषतः "DevToolsActivePort फाइल अस्तित्वात नाही" त्रुटी संबोधित करते. हेडलेस मोडमध्ये चालणारे Chrome, जुळत नसल्यामुळे किंवा स्मृती कमतरतेमुळे नीट सुरू करू शकत नाही तेव्हा ही समस्या विशेषत: उद्भवते. पहिली स्क्रिप्ट क्रोम आवृत्ती निर्दिष्ट करून आणि ChromeDriver सह सुसंगतता सुनिश्चित करून हे हाताळते, जे चालवण्यासाठी महत्त्वपूर्ण आहे सेलेनियम चाचण्या सुरुवातीच्या कमांड्स apt पॅकेजेसचे अपडेट करतात आणि मिररमधून Google Chrome ची विशिष्ट आवृत्ती आणण्यासाठी wget वापरतात. मिरर वापरणे हे सुनिश्चित करते की योग्य आवृत्ती स्थापित केली आहे, विशेषतः जर डीफॉल्ट रेपॉजिटरीमध्ये ही आवृत्ती नसेल. हा दृष्टिकोन हमी देतो की Chrome ची सातत्यपूर्ण आवृत्ती वेगवेगळ्या चाचणी धावांमध्ये वापरली जाईल.

पुढे, स्क्रिप्ट पार्स करण्यासाठी कमांड वापरून Chrome मधील प्रमुख आवृत्ती (उदा. "117.0.5938.62" वरून "117") वेगळी करून आवृत्ती-सुसंगत ChromeDriver स्थापित करण्यासाठी पुढे जाते. हे ChromeDriver रिलीझसाठी डिझाइन केलेला URL पॅटर्न वापरून त्या विशिष्ट प्रमुख आवृत्तीसाठी आवश्यक असलेला अचूक ChromeDriver आणण्यासाठी स्क्रिप्टला अनुमती देते. या आवृत्त्या संरेखित झाल्याची खात्री करून, सेटअप न जुळलेल्या आवृत्त्यांना ChromeDriver इनिशिएलायझेशन अयशस्वी होण्यापासून प्रतिबंधित करते, जे अनेकदा DevTools त्रुटी ट्रिगर करते. ChromeDriver विशिष्ट आवृत्ती डाउनलोड करण्यात अयशस्वी झाल्यास, स्क्रिप्टमध्ये लवचिकता राखून नवीनतम रिलीझ डाउनलोड करण्यासाठी फॉलबॅक पर्याय समाविष्ट असतो. या पायऱ्या विशेषतः स्वयंचलित CI/CD पाइपलाइनमध्ये उपयुक्त आहेत जेथे जलद आणि विश्वासार्ह उपायांना प्राधान्य आहे 🔧.

डाउनलोड केल्यानंतर, जुन्या ड्रायव्हर्ससह संघर्ष टाळण्यासाठी स्क्रिप्ट "sudo rm -f" वापरून सिस्टममधून पूर्वी स्थापित केलेले कोणतेही ChromeDriver हटवते. हे सुनिश्चित करते की चाचणी स्थिरतेमध्ये व्यत्यय आणू शकणाऱ्या आवृत्ती संघर्षांचे धोके कमी करून, केवळ योग्य आवृत्ती आहे. ChromeDriver साठी परवानग्या देखील एक्झिक्युटेबल करण्यासाठी सेट केल्या आहेत, जे CI/CD वातावरणात ड्रायव्हर लाँच करण्यासाठी आवश्यक पाऊल आहे. “--no-sandbox” आणि “--disable-dev-shm-usage” सारख्या पर्यायांसह “हेडलेस” मोडमध्ये Chrome वापरल्याने देखील Chrome च्या संसाधनाचा ठसा कमी होतो. हे पर्याय Chrome क्रॅश होऊ न देता मर्यादित संसाधनांसह (उदा. क्लाउड सर्व्हर किंवा CI पाइपलाइन) वातावरणात चाचण्या चालविण्यास सक्षम करतात, जे DevToolsActivePort त्रुटीमागील एक सामान्य कारण आहे.

शेवटी, WebDriver सेटअपमध्ये, “--disable-gpu” आणि “--remote-debugging-port=9222” सारखे पर्याय हेडलेस मोडमध्ये अधिक स्थिर Chrome चालण्याची खात्री देतात. “--disable-gpu” ध्वज GPU रेंडरिंग अक्षम करतो, जे अनावश्यक आणि कधीकधी हेडलेस मोडमध्ये समस्याप्रधान आहे. दरम्यान, “--remote-debugging-port” पर्याय Chrome ला सेलेनियमला ​​CI मध्ये कनेक्ट करण्यासाठी आवश्यक असलेले डीबगिंग पोर्ट उघडण्याची परवानगी देतो. थोडक्यात, हे सेटअप सामान्य ऑटोमेशन अडथळे टाळते, अधिक विश्वासार्ह आणि मजबूत चाचणी वातावरण सक्षम करते. परिणामी, या स्क्रिप्ट्स CI/CD सिस्टीमवर हेडलेस क्रोम चालवणे अधिक सहज अनुभव देतात, स्वयंचलित चाचण्या कोणत्याही अडथळ्यांशिवाय सातत्याने चालतात हे सुनिश्चित करतात 🚀.

GitHub क्रियांवर सेलेनियम चाचण्यांमध्ये "DevToolsActivePort फाइल अस्तित्वात नाही" त्रुटीचे निराकरण करणे

उपाय १: Chrome आणि ChromeDriver साठी इंस्टॉलेशन आणि कॉन्फिगरेशन स्क्रिप्ट

sudo apt-get update
sudo apt-get install -y wget apt-transport-https curl
CHROME_VERSION="117.0.5938.62"
CHROME_DEB="google-chrome-stable_${CHROME_VERSION}-1_amd64.deb"
wget https://mirror.cs.uchicago.edu/google-chrome/pool/main/g/google-chrome-stable/$CHROME_DEB
sudo dpkg -i $CHROME_DEB || sudo apt-get install -f -y
# Install ChromeDriver matching Chrome
sudo apt-get install -y wget unzip
MAJOR_VERSION=$(echo $CHROME_VERSION | cut -d '.' -f1)
LATEST_DRIVER=$(wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$MAJOR_VERSION)
if [ -z "$LATEST_DRIVER" ]; then
  echo "Falling back to latest ChromeDriver version."
  LATEST_DRIVER=$(wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
fi
sudo rm -f /usr/local/bin/chromedriver
wget https://chromedriver.storage.googleapis.com/$LATEST_DRIVER/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver

हेडलेस मोडमध्ये GitHub क्रियांसाठी Java सह WebDriver सेट करणे

उपाय 2: Chrome पर्याय कॉन्फिगर करणे आणि Java मध्ये WebDriver सुरू करणे

Chrome आणि WebDriver सुसंगतता सत्यापित करण्यासाठी युनिट चाचण्या जोडत आहे

उपाय 3: सुसंगतता सुनिश्चित करण्यासाठी आणि CI अंमलबजावणी दरम्यान त्रुटी टाळण्यासाठी युनिट चाचण्या

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
class WebDriverTests {
  private WebDriver driver;
  @BeforeEach
  void setUp() {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless");
    options.addArguments("--no-sandbox");
    driver = new ChromeDriver(options);
  }
  @Test
  void testDriverInitialization() {
    driver.get("https://www.google.com");
    assertEquals("Google", driver.getTitle());
  }
  @AfterEach
  void tearDown() {
    driver.quit();
  }
}

GitHub क्रिया आणि हेडलेस क्रोमसह सेलेनियम चाचण्या ऑप्टिमाइझ करणे

धावण्याचा एक महत्त्वाचा पैलू हेडलेस क्रोम CI/CD पाइपलाइन मधील सेलेनियमसह GitHub Actions पर्यावरणीय मर्यादा समजून घेत आहेत. हेडलेस मोडमध्ये Chrome चालवणे म्हणजे ते ग्राफिकल इंटरफेसशिवाय चालते, ज्यामुळे ते CI वातावरणासाठी परिपूर्ण होते. तथापि, हेडलेस Chrome सिस्टम कॉन्फिगरेशनसाठी अधिक संवेदनशील असू शकते आणि स्थानिक वातावरणाच्या तुलनेत अतिरिक्त सेटअप आवश्यक आहे. "DevToolsActivePort फाईल अस्तित्वात नाही," ही त्रुटी सामान्यत: क्रोमच्या इनिशिएलायझेशनमधील अपयशाशी जोडलेली असते, बहुतेकदा मेमरी मर्यादा किंवा कॉन्फिगरेशन विसंगततेमुळे. सारख्या मेमरी-कार्यक्षम कॉन्फिगरेशनची अंमलबजावणी करणे --अक्षम-dev-shm-वापर आणि --नो-सँडबॉक्स या समस्यांवर मात करण्यास मदत करते आणि मेमरी-मर्यादित CI/CD वातावरणात चाचण्या स्थिर करू शकतात.

सुसंगतता सुनिश्चित करण्यासाठी, Chrome आणि ChromeDriver दोन्ही आवृत्त्या संरेखित ठेवणे आवश्यक आहे. विसंगत आवृत्त्या हे GitHub क्रियांमध्ये वारंवार त्रुटींचे स्त्रोत आहेत, कारण धावणारा नवीनतम आवृत्तीवर डीफॉल्ट असू शकतो, जी कदाचित ChromeDriver आवश्यकतांशी जुळत नाही. याचे निराकरण करण्यासाठी, आमच्या सोल्यूशनमध्ये स्थिरता सुधारण्यासाठी, अचूक ChromeDriver आवृत्ती आणण्यासाठी मुख्य Chrome आवृत्ती पार्स करणे समाविष्ट आहे. याव्यतिरिक्त, सेटिंग रिमोट-डीबगिंग-पोर्ट कम्युनिकेशन पोर्ट सक्षम करून ChromeDriver ला ब्राउझरशी अधिक विश्वासार्हपणे संवाद साधण्याची अनुमती देते. स्वयंचलित चालविण्यासाठी GitHub क्रिया किंवा तत्सम साधने वापरताना हे सेटअप आवश्यक आहे ब्राउझर चाचण्या आभासी मशीनवर.

या कॉन्फिगरेशनमुळे कार्यक्षमतेत मोठा फरक पडतो, त्रुटी कमी होतात आणि चाचणी धावांची विश्वासार्हता सुधारते. संसाधन-कार्यक्षम पर्यायांची खात्री करून आणि योग्य आवृत्त्या वापरून, हेडलेस क्रोम रन यशस्वीरित्या कार्यान्वित होण्याची अधिक शक्यता असते, ज्यामुळे विकासकांना चाचणीच्या मध्यभागी निराशाजनक त्रुटींना सामोरे जाण्यापासून वाचवले जाते. शेवटी, मजबूत कॉन्फिगरेशन्स आणि सुसंगत अवलंबित्व CI/CD चाचणी अनुभव अधिक नितळ बनवतात, ज्यामुळे विकासकांना सतत सेटअप समस्यांच्या व्यत्ययाशिवाय त्यांचे ऍप्लिकेशन तयार आणि सुधारण्यावर लक्ष केंद्रित करण्यास सक्षम करते 🚀.

GitHub क्रियांमध्ये Chrome सह सेलेनियम चालविण्यासाठी सामान्य प्रश्न आणि उपाय

  1. "DevToolsActivePort फाइल अस्तित्वात नाही" या त्रुटीचा अर्थ काय आहे?
  2. ही त्रुटी उद्भवते जेव्हा Chrome हेडलेस मोडमध्ये योग्यरित्या सुरू करण्यात अयशस्वी होते, विशेषत: सेटअप जुळत नसल्यामुळे किंवा सिस्टम संसाधनांच्या अभावामुळे. सारखे मेमरी पर्याय समायोजित करणे --disable-dev-shm-usage अनेकदा निराकरण करते.
  3. Chrome आणि ChromeDriver आवृत्त्यांशी जुळणे का महत्त्वाचे आहे?
  4. जुळणाऱ्या आवृत्त्या सुसंगतता त्रुटी टाळतात. वापरत आहे आणि विशिष्ट ChromeDriver आणणे हे सुनिश्चित करते की ते एकत्रितपणे सहजतेने कार्य करतात.
  5. कसे करते --remote-debugging-port=9222 हेडलेस चाचणीत मदत?
  6. हे Chrome साठी ChromeDriver द्वारे नियंत्रित करण्यासाठी एक पोर्ट सक्षम करते, चाचण्यांना ब्राउझर उदाहरणाशी अधिक प्रभावीपणे कनेक्ट करण्याची परवानगी देते आणि DevTools त्रुटी प्रतिबंधित करते.
  7. काय करते --no-sandbox करू?
  8. हे Chrome चे सँडबॉक्सिंग अक्षम करते, जे Chrome ला CI वातावरणात सुरू होण्यास मदत करते, कारण सँडबॉक्सिंगमुळे कधीकधी प्रतिबंधित वातावरणात हेडलेस Chrome क्रॅश होऊ शकते.
  9. ChromeDriver आवृत्ती डाउनलोड करण्यात अयशस्वी झाल्यास फॉलबॅक आहे का?
  10. होय, आमच्या स्क्रिप्टमध्ये फॉलबॅक समाविष्ट आहे जे वापरते --latest_release जुळणारी आवृत्ती अयशस्वी झाल्यास, Chrome आवृत्ती इंस्टॉल केलेली असली तरी ChromeDriver उपलब्ध असल्याची खात्री करून.
  11. CI/CD पाइपलाइनमधील क्रोम मेमरी-संबंधित समस्या मी कशा टाळू शकतो?
  12. वापरत आहे --disable-dev-shm-usage सामायिक मेमरी पुनर्निर्देशित करते, CI वातावरणात मर्यादित /dev/shm जागेमुळे Chrome क्रॅश होण्यापासून प्रतिबंधित करते.
  13. मी हेडलेस मोडमध्ये Chrome डीबग करू शकतो?
  14. होय, वापरून --remote-debugging-port आणि स्थानिक पातळीवर चाचणी चालवणे तुम्हाला हेडलेस मोडमध्ये डीबग करण्यासाठी Chrome DevTools उघडू देते.
  15. WebDriverManager ChromeDriver अपडेट आपोआप हाताळतो का?
  16. WebDriverManager स्थानिक पातळीवर ड्रायव्हर अद्यतने सुलभ करते, परंतु CI/CD पाइपलाइनमध्ये, दर्शविल्याप्रमाणे, विशिष्ट आवृत्त्या सेट करणे, पुनरावृत्ती करण्यायोग्य बिल्डसाठी अधिक विश्वासार्ह आहे.
  17. उद्देश काय आहे स्क्रिप्ट मध्ये?
  18. ही कमांड क्रोम बंद करून आणि वेबड्रायव्हर सत्र संपवून, CI/CD वातावरणात मेमरी लीक रोखून संसाधने सोडते.
  19. कमिट करण्यापूर्वी मी GitHub क्रियांवर माझ्या सेलेनियम सेटअपची चाचणी कशी करू?
  20. सह स्थानिक पातळीवर चाचण्या चालवत आहेत headless GitHub वर ढकलण्यापूर्वी पर्याय आणि CI कॉन्फिगरेशन समस्या पकडू शकतात, ज्यामुळे डीबगिंग सोपे होते.
  21. CI मधील ChromeDriver साठी मला कोणत्या परवानग्या आवश्यक आहेत?
  22. ChromeDriver ला कार्यान्वित परवानग्या आवश्यक आहेत, द्वारे सेट , GitHub क्रियांमध्ये चाचण्या यशस्वीपणे चालवण्यासाठी.

CI/CD चाचण्यांसाठी हेडलेस क्रोम कॉन्फिगर करण्यावर अंतिम विचार

GitHub क्रियांवर हेडलेस क्रोमसह सेलेनियम चाचण्यांसाठी योग्य सेटअप सुनिश्चित केल्याने वेळ वाचतो आणि विश्वासार्हता वाढते. "DevToolsActivePort फाईल अस्तित्वात नाही" सारख्या त्रुटींचे निराकरण केल्याने CI/CD चाचणी विकसकांसाठी अधिक अखंड आणि कमी निराशाजनक होऊ शकते.

संरेखित करून ChromeDriver आणि Chrome आवृत्त्या आणि मेमरी-कार्यक्षम पर्याय कॉन्फिगर करणे, हा दृष्टीकोन प्रतिबंधित वातावरणात चाचण्या कार्यक्षमतेने चालविण्यात मदत करतो. हे एक व्यावहारिक उपाय आहे जे विकासकांना चाचणी व्यत्ययांची चिंता न करता त्यांच्या मुख्य कार्यांवर लक्ष केंद्रित करू देते 🚀.

सेलेनियम आणि ChromeDriver समस्यांचे निवारण करण्यासाठी संदर्भ आणि स्त्रोत सामग्री
  1. सीआय/सीडी वातावरणासाठी हेडलेस क्रोममध्ये DevToolsActivePort समस्या हाताळण्यासाठी तपशीलवार समस्यानिवारण मार्गदर्शक. सेलेनियम वेबड्रायव्हर दस्तऐवजीकरण
  2. द्वारे प्रदान केलेल्या सतत एकत्रीकरण सेटअपमध्ये Chrome आणि ChromeDriver आवृत्त्यांसाठी सर्वसमावेशक स्थापना आणि कॉन्फिगरेशन सूचना GitHub क्रिया दस्तऐवजीकरण
  3. मध्ये उपलब्ध ChromeDriver सेटअप, सुसंगतता आणि कॉन्फिगरेशन पर्यायांसाठी चरण-दर-चरण समाधान WebDriverManager दस्तऐवजीकरण
  4. CI/CD मध्ये मेमरी कार्यक्षमतेसाठी हेडलेस क्रोम कॉन्फिगर करण्याच्या सर्वोत्तम पद्धतींचा संदर्भ, विशेषतः प्रतिबंधित वातावरणात. येथे अधिक वाचा Google Chrome विकसक मार्गदर्शक