CI/CD ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ ਕ੍ਰੋਮ ਟੈਸਟ ਦੀਆਂ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਦੂਰ ਕਰਨਾ
ਵਿੱਚ ਸੇਲੇਨਿਅਮ ਟੈਸਟ ਚੱਲ ਰਿਹਾ ਹੈ ਸਿਰ ਰਹਿਤ ਕਰੋਮ 'ਤੇ GitHub ਕਾਰਵਾਈਆਂ ਨਿਰਵਿਘਨ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ. ਫਿਰ ਵੀ, ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰ ਨਿਰਾਸ਼ਾਜਨਕ "DevToolsActivePort ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" ਗਲਤੀ ਦਾ ਸਾਹਮਣਾ ਕਰਦੇ ਹਨ। ਇਹ ਉਦੋਂ ਵਾਪਰਦਾ ਹੈ ਜਦੋਂ Chrome, ਇੱਕ ਜਾਂ ਕਿਸੇ ਹੋਰ ਕਾਰਨ ਕਰਕੇ, CI ਵਾਤਾਵਰਣ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੁੰਦਾ ਹੈ।
ਗਲਤੀ ਸੁਨੇਹਾ ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਸੰਕੇਤ ਦਿੰਦਾ ਹੈ ਕਿ Chrome ਅਚਾਨਕ ਕ੍ਰੈਸ਼ ਹੋ ਰਿਹਾ ਹੈ, ਜੋ ਕਿ ਅਕਸਰ ਬੇਮੇਲ ਹੋਣ ਦਾ ਨਤੀਜਾ ਹੁੰਦਾ ਹੈ ਕਰੋਮ ਅਤੇ ChromeDriver ਟੈਸਟ ਸੈੱਟਅੱਪ ਵਿੱਚ ਸੰਸਕਰਣ ਜਾਂ ਗਲਤ ਸੰਰਚਨਾ ਕੀਤੇ ਵਿਕਲਪ। ਬਹੁਤ ਸਾਰੇ ਡਿਵੈਲਪਰਾਂ ਵਾਂਗ, ਮੈਂ ਇਸ ਚੁਣੌਤੀ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਇੱਕ ਵਿੱਚ ਸਵੈਚਲਿਤ ਟੈਸਟਾਂ ਨੂੰ ਤੈਨਾਤ ਕਰਨਾ ਲਗਾਤਾਰ ਏਕੀਕਰਣ ਵਾਤਾਵਰਣ.
ਇਸ ਸੈਟਅਪ ਵਿੱਚ, ਸਭ ਤੋਂ ਛੋਟਾ ਗਲਤ ਅਲਾਈਨਮੈਂਟ, ਜਿਵੇਂ ਕਿ ਇੱਕ ChromeDriver ਸੰਸਕਰਣ ਬੇਮੇਲ, ਟੈਸਟ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਰੋਕ ਸਕਦਾ ਹੈ, ਕੀਮਤੀ ਸਮਾਂ ਅਤੇ ਸੰਸਾਧਨਾਂ ਦਾ ਖਰਚਾ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਅੰਤਰੀਵ ਮੁੱਦਿਆਂ ਨੂੰ ਸਮਝਣਾ ਇਸ ਨੂੰ ਹੱਲ ਕਰਨਾ ਬਹੁਤ ਸੌਖਾ ਬਣਾਉਂਦਾ ਹੈ 🛠️।
ਇਸ ਗਾਈਡ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਆਮ ਗਲਤੀ ਨੂੰ ਰੋਕਣ ਅਤੇ ਸਮੱਸਿਆ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨ ਲਈ ਵਿਹਾਰਕ ਕਦਮਾਂ ਵਿੱਚ ਡੁਬਕੀ ਲਗਾਵਾਂਗੇ। ਕ੍ਰੋਮ ਇੰਸਟਾਲੇਸ਼ਨ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਤੋਂ ਲੈ ਕੇ ਸਹੀ ਡਰਾਈਵਰ ਸ਼ੁਰੂਆਤ ਤੱਕ, ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਨਿਰਵਿਘਨ ਟੈਸਟ ਰਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਇੱਕ ਕਦਮ-ਦਰ-ਕਦਮ ਪ੍ਰਕਿਰਿਆ ਮਿਲੇਗੀ। ਆਓ ਇਸ ਮੁੱਦੇ ਨਾਲ ਨਜਿੱਠੀਏ ਅਤੇ ਤੁਹਾਡੇ ਟੈਸਟਾਂ ਨੂੰ ਦੁਬਾਰਾ ਲੀਹ 'ਤੇ ਲਿਆਏ!
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
CHROME_VERSION="117.0.5938.62" | ਇੱਕ ਖਾਸ Chrome ਸੰਸਕਰਣ ਸੈੱਟ ਕਰਦਾ ਹੈ, CI ਟੈਸਟਾਂ ਦੌਰਾਨ ChromeDriver ਅਨੁਕੂਲਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ Chrome ਅਤੇ ChromeDriver ਵਿਚਕਾਰ ਬੇਮੇਲਤਾ ਨੂੰ ਰੋਕਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। |
MAJOR_VERSION=$(echo $CHROME_VERSION | cut -d '.' -f1) | ਪੂਰੇ ਕ੍ਰੋਮ ਸੰਸਕਰਣ ਤੋਂ ਪ੍ਰਮੁੱਖ ਸੰਸਕਰਣ ਨੰਬਰ ਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰਦਾ ਹੈ। ਇਹ ਅਨੁਕੂਲਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, ChromeDriver ਦੇ ਮੇਲ ਖਾਂਦੇ ਸੰਸਕਰਣ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
LATEST_DRIVER=$(wget -qO- ...) | ਨਿਰਧਾਰਤ Chrome ਸੰਸਕਰਣ ਲਈ ਨਵੀਨਤਮ ਅਨੁਕੂਲ ChromeDriver ਸੰਸਕਰਣ ਲਿਆਉਂਦਾ ਹੈ, ਆਟੋਮੇਸ਼ਨ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ "DevToolsActivePort" ਤਰੁੱਟੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। |
if [ -z "$LATEST_DRIVER" ] | ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ChromeDriver ਸੰਸਕਰਣ ਵੇਰੀਏਬਲ ਖਾਲੀ ਹੈ, ਜੋ ਇੱਕ ਅਨੁਕੂਲ ਸੰਸਕਰਣ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਇੱਕ ਤਰੁੱਟੀ ਦਰਸਾਉਂਦਾ ਹੈ। ਇਹ ਸਥਿਤੀ ਟੈਸਟ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਰੋਕਣ ਲਈ ਫਾਲਬੈਕ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ। |
sudo dpkg -i $CHROME_DEB | dpkg ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਉਨਲੋਡ ਕੀਤੇ Chrome ਪੈਕੇਜ ਨੂੰ ਸਥਾਪਿਤ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ GitHub ਐਕਸ਼ਨ ਵਰਗੇ ਲੀਨਕਸ ਵਾਤਾਵਰਨ ਵਿੱਚ ਖਾਸ ਤੌਰ 'ਤੇ ਉਪਯੋਗੀ ਹੈ। |
sudo rm -f /usr/local/bin/chromedriver | ਕਿਸੇ ਵੀ ਪਹਿਲਾਂ ਤੋਂ ਸਥਾਪਿਤ ChromeDriver ਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਨਵੀਂ ਸਥਾਪਨਾ ਦੇ ਦੌਰਾਨ ਕੋਈ ਸੰਸਕਰਣ ਵਿਵਾਦ ਨਹੀਂ ਹੈ। |
options.addArguments("--no-sandbox") | Chrome ਸੈਂਡਬਾਕਸਿੰਗ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ CI ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਖਾਸ ਤੌਰ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਕਿਉਂਕਿ ਸੈਂਡਬਾਕਸਿੰਗ Chrome ਨੂੰ ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਰੋਕ ਸਕਦੀ ਹੈ। |
options.addArguments("--disable-dev-shm-usage") | /dev/shm ਵਰਤੋਂ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾ ਕੇ ਉਪਲਬਧ ਸ਼ੇਅਰਡ ਮੈਮੋਰੀ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ, ਜੋ ਸੀਮਤ ਮੈਮੋਰੀ, ਜਿਵੇਂ ਕਿ ਕੰਟੇਨਰਾਂ ਵਾਲੇ ਵਾਤਾਵਰਨ ਵਿੱਚ ਕਰੋਮ ਦੇ ਕਰੈਸ਼ਾਂ ਨੂੰ ਰੋਕ ਸਕਦਾ ਹੈ। |
options.addArguments("--remote-debugging-port=9222") | ਇੱਕ ਨਿਰਧਾਰਤ ਪੋਰਟ 'ਤੇ ਰਿਮੋਟ ਡੀਬੱਗਿੰਗ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। "DevToolsActivePort" ਤਰੁੱਟੀਆਂ ਨੂੰ ਰੋਕਦੇ ਹੋਏ, ਕੁਝ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਸਿਰਲੇਖ ਰਹਿਤ Chrome ਲਈ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਇਹ ਇੱਕ ਲੋੜ ਹੈ। |
driver.quit() | ਸਾਰੀਆਂ ਕ੍ਰੋਮ ਵਿੰਡੋਜ਼ ਨੂੰ ਬੰਦ ਕਰਦਾ ਹੈ ਅਤੇ ਸਰੋਤਾਂ ਨੂੰ ਖਾਲੀ ਕਰਦੇ ਹੋਏ, WebDriver ਸੈਸ਼ਨ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ। ਇਹ CI/CD ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ ਸਰੋਤ ਲੀਕ ਨੂੰ ਰੋਕਣ ਅਤੇ ਉਪਲਬਧ ਮੈਮੋਰੀ ਦੇ ਖਤਮ ਹੋਣ ਤੋਂ ਬਚਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। |
CI ਵਿੱਚ Chrome ਅਤੇ ChromeDriver ਸੈੱਟਅੱਪ ਲਈ ਵਿਸਤ੍ਰਿਤ ਹੱਲ
ਉਪਰੋਕਤ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ Chrome ਅਤੇ ChromeDriver ਦੋਵਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਅਤੇ ਸੰਰਚਿਤ ਕਰਨ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ GitHub ਕਾਰਵਾਈਆਂ ਵਾਤਾਵਰਣ, ਖਾਸ ਤੌਰ 'ਤੇ "DevToolsActivePort ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" ਗਲਤੀ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਦੇ ਹੋਏ। ਇਹ ਸਮੱਸਿਆ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ Chrome, ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਬੇਮੇਲ ਜਾਂ ਮੈਮੋਰੀ ਸੀਮਾਵਾਂ ਦੇ ਕਾਰਨ ਸਹੀ ਢੰਗ ਨਾਲ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ। ਪਹਿਲੀ ਸਕ੍ਰਿਪਟ ਇੱਕ Chrome ਸੰਸਕਰਣ ਨਿਰਧਾਰਤ ਕਰਕੇ ਅਤੇ ChromeDriver ਨਾਲ ਇਸਦੀ ਅਨੁਕੂਲਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾ ਕੇ ਇਸ ਨਾਲ ਨਜਿੱਠਦੀ ਹੈ, ਜੋ ਕਿ ਚਲਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਸੇਲੇਨਿਅਮ ਟੈਸਟ। ਸ਼ੁਰੂਆਤੀ ਕਮਾਂਡਾਂ apt ਪੈਕੇਜਾਂ ਦਾ ਇੱਕ ਅੱਪਡੇਟ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਇੱਕ ਮਿਰਰ ਤੋਂ Google Chrome ਦੇ ਇੱਕ ਖਾਸ ਸੰਸਕਰਣ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ wget ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ। ਸ਼ੀਸ਼ੇ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਹੀ ਸੰਸਕਰਣ ਸਥਾਪਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਖਾਸ ਕਰਕੇ ਜੇ ਡਿਫਾਲਟ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਇਹ ਸੰਸਕਰਣ ਨਹੀਂ ਹੈ। ਇਹ ਪਹੁੰਚ ਇਸ ਗੱਲ ਦੀ ਗਾਰੰਟੀ ਦਿੰਦੀ ਹੈ ਕਿ ਕ੍ਰੋਮ ਦਾ ਇਕਸਾਰ ਸੰਸਕਰਣ ਵੱਖ-ਵੱਖ ਟੈਸਟ ਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ਅੱਗੇ, ਸਕ੍ਰਿਪਟ ਪਾਰਸ ਕਰਨ ਲਈ ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ Chrome ਤੋਂ ਮੁੱਖ ਸੰਸਕਰਣ (ਉਦਾਹਰਨ ਲਈ, "117.0.5938.62" ਤੋਂ "117") ਨੂੰ ਅਲੱਗ ਕਰਕੇ ਇੱਕ ਵਰਜਨ-ਅਨੁਕੂਲ ChromeDriver ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਅੱਗੇ ਵਧਦੀ ਹੈ। ਇਹ ਸਕ੍ਰਿਪਟ ਨੂੰ ChromeDriver ਰੀਲੀਜ਼ਾਂ ਲਈ ਤਿਆਰ ਕੀਤੇ URL ਪੈਟਰਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਉਸ ਖਾਸ ਮੁੱਖ ਸੰਸਕਰਣ ਲਈ ਲੋੜੀਂਦੇ ਸਹੀ ChromeDriver ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਨ ਦੁਆਰਾ ਕਿ ਇਹ ਸੰਸਕਰਣ ਇਕਸਾਰ ਹਨ, ਸੈੱਟਅੱਪ ਬੇਮੇਲ ਸੰਸਕਰਣਾਂ ਨੂੰ ChromeDriver ਸ਼ੁਰੂਆਤੀ ਅਸਫਲਤਾ ਦਾ ਕਾਰਨ ਬਣਨ ਤੋਂ ਰੋਕਦਾ ਹੈ, ਜੋ ਅਕਸਰ DevTools ਗੜਬੜ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ। ਜੇਕਰ ChromeDriver ਖਾਸ ਸੰਸਕਰਣ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਲਚਕਤਾ ਬਣਾਈ ਰੱਖਦੇ ਹੋਏ, ਨਵੀਨਤਮ ਰੀਲੀਜ਼ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਇੱਕ ਫਾਲਬੈਕ ਵਿਕਲਪ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਇਹ ਕਦਮ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਸਵੈਚਲਿਤ CI/CD ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ ਉਪਯੋਗੀ ਹਨ ਜਿੱਥੇ ਤੇਜ਼ ਅਤੇ ਭਰੋਸੇਮੰਦ ਹੱਲ ਇੱਕ ਤਰਜੀਹ ਹਨ 🔧।
ਡਾਉਨਲੋਡ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਸਕ੍ਰਿਪਟ ਪੁਰਾਣੇ ਡਰਾਈਵਰਾਂ ਨਾਲ ਟਕਰਾਅ ਤੋਂ ਬਚਣ ਲਈ "sudo rm -f" ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਸਿਸਟਮ ਤੋਂ ਪਹਿਲਾਂ ਤੋਂ ਸਥਾਪਤ ਕੀਤੇ ChromeDriver ਨੂੰ ਮਿਟਾ ਦਿੰਦੀ ਹੈ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਸਿਰਫ ਸਹੀ ਸੰਸਕਰਣ ਹੀ ਮੌਜੂਦ ਹੈ, ਸੰਸਕਰਣ ਟਕਰਾਅ ਦੇ ਜੋਖਮਾਂ ਨੂੰ ਘੱਟ ਕਰਦਾ ਹੈ ਜੋ ਟੈਸਟ ਸਥਿਰਤਾ ਵਿੱਚ ਵਿਘਨ ਪਾ ਸਕਦੇ ਹਨ। ChromeDriver ਲਈ ਅਨੁਮਤੀਆਂ ਵੀ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਹੋਣ ਲਈ ਸੈੱਟ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ, ਜੋ ਕਿ CI/CD ਵਾਤਾਵਰਨ ਵਿੱਚ ਡਰਾਈਵਰ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਇੱਕ ਜ਼ਰੂਰੀ ਕਦਮ ਹੈ। “--ਨੋ-ਸੈਂਡਬਾਕਸ” ਅਤੇ “--ਅਯੋਗ-dev-shm-usage” ਵਰਗੇ ਵਿਕਲਪਾਂ ਦੇ ਨਾਲ “ਹੈੱਡਲੈੱਸ” ਮੋਡ ਵਿੱਚ Chrome ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਵੀ Chrome ਦੇ ਸਰੋਤ ਫੁੱਟਪ੍ਰਿੰਟ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ। ਇਹ ਵਿਕਲਪ ਸੀਮਤ ਸਰੋਤਾਂ (ਉਦਾਹਰਨ ਲਈ, ਕਲਾਉਡ ਸਰਵਰ ਜਾਂ CI ਪਾਈਪਲਾਈਨਾਂ) ਵਾਲੇ ਵਾਤਾਵਰਣ ਵਿੱਚ Chrome ਨੂੰ ਕ੍ਰੈਸ਼ ਕੀਤੇ ਬਿਨਾਂ ਚਲਾਉਣ ਲਈ ਟੈਸਟਾਂ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦੇ ਹਨ, ਜੋ ਕਿ DevToolsActivePort ਗਲਤੀ ਦੇ ਪਿੱਛੇ ਇੱਕ ਆਮ ਕਾਰਨ ਹੈ।
ਅੰਤ ਵਿੱਚ, WebDriver ਸੈਟਅਪ ਵਿੱਚ, “--disable-gpu” ਅਤੇ “--remote-debugging-port=9222” ਵਰਗੇ ਵਿਕਲਪ ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਇੱਕ ਵਧੇਰੇ ਸਥਿਰ ਕ੍ਰੋਮ ਨੂੰ ਚਲਾਉਣ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ। “--disable-gpu” ਫਲੈਗ GPU ਰੈਂਡਰਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ, ਜੋ ਕਿ ਬੇਲੋੜੀ ਹੈ ਅਤੇ ਕਈ ਵਾਰ ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਸਮੱਸਿਆ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਇਸ ਦੌਰਾਨ, “--remote-debugging-port” ਵਿਕਲਪ ਕ੍ਰੋਮ ਨੂੰ ਇੱਕ ਡੀਬਗਿੰਗ ਪੋਰਟ ਖੋਲ੍ਹਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜੋ ਸੇਲੇਨਿਅਮ ਨੂੰ CI ਵਿੱਚ ਇਸ ਨਾਲ ਜੁੜਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ। ਸੰਖੇਪ ਵਿੱਚ, ਇਹ ਸੈੱਟਅੱਪ ਆਮ ਆਟੋਮੇਸ਼ਨ ਰੁਕਾਵਟਾਂ ਨੂੰ ਰੋਕਦਾ ਹੈ, ਇੱਕ ਵਧੇਰੇ ਭਰੋਸੇਮੰਦ ਅਤੇ ਮਜ਼ਬੂਤ ਟੈਸਟਿੰਗ ਵਾਤਾਵਰਨ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਨਤੀਜੇ ਵਜੋਂ, ਇਹ ਸਕ੍ਰਿਪਟਾਂ CI/CD ਸਿਸਟਮਾਂ 'ਤੇ ਹੈੱਡ-ਰਹਿਤ ਕ੍ਰੋਮ ਨੂੰ ਚਲਾਉਣ ਨੂੰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸੁਚਾਰੂ ਅਨੁਭਵ ਬਣਾਉਂਦੀਆਂ ਹਨ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀਆਂ ਹਨ ਕਿ ਸਵੈਚਲਿਤ ਟੈਸਟ ਬਿਨਾਂ ਕਿਸੇ ਅੜਚਣ ਦੇ ਨਿਰੰਤਰ ਚੱਲਦੇ ਹਨ 🚀।
GitHub ਐਕਸ਼ਨਾਂ 'ਤੇ ਸੇਲੇਨਿਅਮ ਟੈਸਟਾਂ ਵਿੱਚ "DevToolsActivePort ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" ਨੂੰ ਹੱਲ ਕਰਨਾ
ਹੱਲ 1: 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: ਕ੍ਰੋਮ ਵਿਕਲਪਾਂ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨਾ ਅਤੇ ਜਾਵਾ ਵਿੱਚ ਵੈਬਡ੍ਰਾਈਵਰ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ
// Import necessary libraries
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import io.github.bonigarcia.wdm.WebDriverManager;
// Set up ChromeDriver
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--headless");
options.addArguments("--disable-gpu");
options.addArguments("--remote-debugging-port=9222");
ChromeDriver driver = new ChromeDriver(options);
// Start Selenium test logic here
driver.quit();
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 ਐਕਸ਼ਨ ਵਾਤਾਵਰਣ ਦੀਆਂ ਰੁਕਾਵਟਾਂ ਨੂੰ ਸਮਝ ਰਿਹਾ ਹੈ। ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਕ੍ਰੋਮ ਨੂੰ ਚਲਾਉਣ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਇੱਕ ਗ੍ਰਾਫਿਕਲ ਇੰਟਰਫੇਸ ਤੋਂ ਬਿਨਾਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਇਸਨੂੰ CI ਵਾਤਾਵਰਣਾਂ ਲਈ ਸੰਪੂਰਨ ਬਣਾਉਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਹੈੱਡਲੈੱਸ ਕ੍ਰੋਮ ਸਿਸਟਮ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਪ੍ਰਤੀ ਵਧੇਰੇ ਸੰਵੇਦਨਸ਼ੀਲ ਹੋ ਸਕਦਾ ਹੈ ਅਤੇ ਸਥਾਨਕ ਵਾਤਾਵਰਣ ਦੇ ਮੁਕਾਬਲੇ ਵਾਧੂ ਸੈੱਟਅੱਪ ਦੀ ਲੋੜ ਹੈ। ਗਲਤੀ, "DevToolsActivePort ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ," ਆਮ ਤੌਰ 'ਤੇ ਕ੍ਰੋਮ ਦੀ ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਅਸਫਲਤਾ ਨਾਲ ਜੁੜੀ ਹੁੰਦੀ ਹੈ, ਅਕਸਰ ਮੈਮੋਰੀ ਕਮੀਆਂ ਜਾਂ ਕੌਂਫਿਗਰੇਸ਼ਨ ਬੇਮੇਲ ਹੋਣ ਕਾਰਨ। ਜਿਵੇਂ ਕਿ ਮੈਮੋਰੀ-ਕੁਸ਼ਲ ਸੰਰਚਨਾ ਨੂੰ ਲਾਗੂ ਕਰਨਾ --ਅਯੋਗ-dev-shm-ਵਰਤੋਂ ਅਤੇ --ਕੋਈ-ਸੈਂਡਬਾਕਸ ਇਹਨਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਦੂਰ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਅਤੇ ਮੈਮੋਰੀ-ਸੀਮਤ CI/CD ਵਾਤਾਵਰਨ ਵਿੱਚ ਟੈਸਟਾਂ ਨੂੰ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਸਥਿਰ ਕਰ ਸਕਦਾ ਹੈ।
ਅਨੁਕੂਲਤਾ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, Chrome ਅਤੇ ChromeDriver ਸੰਸਕਰਣਾਂ ਨੂੰ ਇਕਸਾਰ ਰੱਖਣਾ ਜ਼ਰੂਰੀ ਹੈ। ਅਸੰਗਤ ਸੰਸਕਰਣ GitHub ਕਾਰਵਾਈਆਂ ਵਿੱਚ ਤਰੁੱਟੀਆਂ ਦਾ ਇੱਕ ਅਕਸਰ ਸਰੋਤ ਹਨ, ਕਿਉਂਕਿ ਦੌੜਾਕ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਲਈ ਡਿਫੌਲਟ ਹੋ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ChromeDriver ਲੋੜਾਂ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੋ ਸਕਦਾ ਹੈ। ਇਸ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ, ਸਾਡੇ ਹੱਲ ਵਿੱਚ ਸਥਿਰਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ, ਸਹੀ ChromeDriver ਸੰਸਕਰਣ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਪ੍ਰਮੁੱਖ Chrome ਸੰਸਕਰਣ ਨੂੰ ਪਾਰਸ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਸੈਟਿੰਗ ਰਿਮੋਟ-ਡੀਬੱਗਿੰਗ-ਪੋਰਟ ਇੱਕ ਸੰਚਾਰ ਪੋਰਟ ਨੂੰ ਸਮਰੱਥ ਬਣਾ ਕੇ ChromeDriver ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਨਾਲ ਵਧੇਰੇ ਭਰੋਸੇਯੋਗਤਾ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਆਟੋਮੈਟਿਕ ਚਲਾਉਣ ਲਈ GitHub ਐਕਸ਼ਨ ਜਾਂ ਸਮਾਨ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਇਹ ਸੈੱਟਅੱਪ ਜ਼ਰੂਰੀ ਹੈ ਬਰਾਊਜ਼ਰ ਟੈਸਟ ਇੱਕ ਵਰਚੁਅਲ ਮਸ਼ੀਨ 'ਤੇ.
ਇਹ ਸੰਰਚਨਾ ਕੁਸ਼ਲਤਾ, ਗਲਤੀਆਂ ਨੂੰ ਘਟਾਉਣ ਅਤੇ ਟੈਸਟ ਰਨ ਦੀ ਭਰੋਸੇਯੋਗਤਾ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨ ਵਿੱਚ ਇੱਕ ਵੱਡਾ ਫਰਕ ਲਿਆਉਂਦੀ ਹੈ। ਸਰੋਤ-ਕੁਸ਼ਲ ਵਿਕਲਪਾਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਅਤੇ ਸਹੀ ਸੰਸਕਰਣਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਹੈੱਡ-ਰਹਿਤ ਕ੍ਰੋਮ ਰਨ ਦੇ ਸਫਲਤਾਪੂਰਵਕ ਚੱਲਣ ਦੀ ਸੰਭਾਵਨਾ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਨਿਰਾਸ਼ਾਜਨਕ ਗਲਤੀਆਂ ਨਾਲ ਨਜਿੱਠਣ ਤੋਂ ਬਚਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਅੰਤ ਵਿੱਚ, ਮਜਬੂਤ ਸੰਰਚਨਾਵਾਂ ਅਤੇ ਅਨੁਕੂਲ ਨਿਰਭਰਤਾਵਾਂ CI/CD ਟੈਸਟਿੰਗ ਅਨੁਭਵ ਨੂੰ ਨਿਰਵਿਘਨ ਬਣਾਉਂਦੀਆਂ ਹਨ, ਜਿਸ ਨਾਲ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸਥਾਈ ਸੈਟਅਪ ਮੁੱਦਿਆਂ 🚀 ਦੇ ਵਿਘਨ ਤੋਂ ਬਿਨਾਂ ਉਹਨਾਂ ਦੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਬਣਾਉਣ ਅਤੇ ਸੁਧਾਰਨ 'ਤੇ ਧਿਆਨ ਦੇਣ ਦੇ ਯੋਗ ਬਣਾਉਂਦੇ ਹਨ।
GitHub ਐਕਸ਼ਨਾਂ ਵਿੱਚ ਕ੍ਰੋਮ ਨਾਲ ਸੇਲੇਨਿਅਮ ਚਲਾਉਣ ਲਈ ਆਮ ਸਵਾਲ ਅਤੇ ਹੱਲ
- ਗਲਤੀ "DevToolsActivePort ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" ਦਾ ਕੀ ਮਤਲਬ ਹੈ?
- ਇਹ ਤਰੁੱਟੀ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ Chrome ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੁੰਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਸੈੱਟਅੱਪ ਬੇਮੇਲ ਹੋਣ ਜਾਂ ਸਿਸਟਮ ਸਰੋਤਾਂ ਦੀ ਘਾਟ ਕਾਰਨ। ਮੈਮੋਰੀ ਵਿਕਲਪਾਂ ਨੂੰ ਅਡਜਸਟ ਕਰਨਾ ਜਿਵੇਂ ਕਿ --disable-dev-shm-usage ਅਕਸਰ ਇਸ ਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ.
- Chrome ਅਤੇ ChromeDriver ਸੰਸਕਰਣਾਂ ਦਾ ਮੇਲ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਕਿਉਂ ਹੈ?
- ਮੇਲ ਖਾਂਦੇ ਸੰਸਕਰਣ ਅਨੁਕੂਲਤਾ ਗਲਤੀਆਂ ਤੋਂ ਬਚਦੇ ਹਨ। ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ MAJOR_VERSION=$(echo $CHROME_VERSION | cut -d '.' -f1) ਅਤੇ ਖਾਸ ChromeDriver ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਉਹ ਇਕੱਠੇ ਕੰਮ ਕਰਦੇ ਹਨ।
- ਕਿਵੇਂ ਕਰਦਾ ਹੈ --remote-debugging-port=9222 ਸਿਰ ਰਹਿਤ ਟੈਸਟਿੰਗ ਵਿੱਚ ਮਦਦ?
- ਇਹ Chrome ਲਈ ਇੱਕ ਪੋਰਟ ਨੂੰ ChromeDriver ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ, ਟੈਸਟਾਂ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਉਦਾਹਰਨ ਨਾਲ ਵਧੇਰੇ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਅਤੇ DevTools ਤਰੁਟੀਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ।
- ਕੀ ਕਰਦਾ ਹੈ --no-sandbox ਕਰਦੇ ਹਾਂ?
- ਇਹ ਕ੍ਰੋਮ ਦੀ ਸੈਂਡਬਾਕਸਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ, ਜੋ CI ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ Chrome ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਕਿਉਂਕਿ ਸੈਂਡਬਾਕਸਿੰਗ ਕਈ ਵਾਰ ਹੈੱਡਲੈੱਸ ਕ੍ਰੋਮ ਨੂੰ ਪ੍ਰਤਿਬੰਧਿਤ ਵਾਤਾਵਰਣ ਵਿੱਚ ਕ੍ਰੈਸ਼ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀ ਹੈ।
- ਜੇਕਰ ChromeDriver ਸੰਸਕਰਣ ਡਾਊਨਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ ਤਾਂ ਕੀ ਕੋਈ ਫਾਲਬੈਕ ਹੈ?
- ਹਾਂ, ਸਾਡੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਇੱਕ ਫਾਲਬੈਕ ਸ਼ਾਮਲ ਹੈ ਜੋ ਵਰਤਦਾ ਹੈ --latest_release ਜੇਕਰ ਮੇਲ ਖਾਂਦਾ ਸੰਸਕਰਣ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ChromeDriver ਉਪਲਬਧ ਹੈ, ਭਾਵੇਂ ਕਿ Chrome ਸੰਸਕਰਣ ਸਥਾਪਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ।
- ਮੈਂ CI/CD ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ ਕ੍ਰੋਮ ਮੈਮੋਰੀ-ਸਬੰਧਤ ਮੁੱਦਿਆਂ ਤੋਂ ਕਿਵੇਂ ਬਚਾਂ?
- ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ --disable-dev-shm-usage ਸ਼ੇਅਰਡ ਮੈਮੋਰੀ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਦਾ ਹੈ, CI ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਸੀਮਤ /dev/shm ਸਪੇਸ ਦੇ ਕਾਰਨ Chrome ਕਰੈਸ਼ ਨੂੰ ਰੋਕਦਾ ਹੈ।
- ਕੀ ਮੈਂ ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ Chrome ਨੂੰ ਡੀਬੱਗ ਕਰ ਸਕਦਾ/ਦੀ ਹਾਂ?
- ਹਾਂ, ਵਰਤ ਕੇ --remote-debugging-port ਅਤੇ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਇੱਕ ਟੈਸਟ ਚਲਾਉਣਾ ਤੁਹਾਨੂੰ ਹੈੱਡਲੈੱਸ ਮੋਡ ਵਿੱਚ ਡੀਬੱਗ ਕਰਨ ਲਈ Chrome DevTools ਖੋਲ੍ਹਣ ਦਿੰਦਾ ਹੈ।
- ਕੀ WebDriverManager ਆਪਣੇ ਆਪ ChromeDriver ਅੱਪਡੇਟ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ?
- WebDriverManager ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਡਰਾਈਵਰ ਅੱਪਡੇਟਾਂ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦਾ ਹੈ, ਪਰ CI/CD ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ, ਖਾਸ ਸੰਸਕਰਣ ਸਥਾਪਤ ਕਰਨਾ, ਜਿਵੇਂ ਕਿ ਦਿਖਾਇਆ ਗਿਆ ਹੈ, ਦੁਹਰਾਉਣ ਯੋਗ ਬਿਲਡਾਂ ਲਈ ਵਧੇਰੇ ਭਰੋਸੇਯੋਗ ਹੈ।
- ਦਾ ਮਕਸਦ ਕੀ ਹੈ driver.quit() ਸਕ੍ਰਿਪਟ ਵਿੱਚ?
- ਇਹ ਕਮਾਂਡ Chrome ਨੂੰ ਬੰਦ ਕਰਕੇ ਅਤੇ WebDriver ਸੈਸ਼ਨ ਨੂੰ ਖਤਮ ਕਰਕੇ, CI/CD ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਮੈਮੋਰੀ ਲੀਕ ਹੋਣ ਤੋਂ ਰੋਕ ਕੇ ਸਰੋਤਾਂ ਨੂੰ ਜਾਰੀ ਕਰਦੀ ਹੈ।
- ਮੈਂ ਕਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ GitHub ਐਕਸ਼ਨਾਂ 'ਤੇ ਆਪਣੇ ਸੇਲੇਨਿਅਮ ਸੈੱਟਅੱਪ ਦੀ ਜਾਂਚ ਕਿਵੇਂ ਕਰਾਂ?
- ਨਾਲ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਟੈਸਟ ਚੱਲ ਰਿਹਾ ਹੈ headless ਵਿਕਲਪ ਅਤੇ CI ਸੰਰਚਨਾ GitHub 'ਤੇ ਧੱਕਣ ਤੋਂ ਪਹਿਲਾਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਫੜ ਸਕਦੀਆਂ ਹਨ, ਡੀਬੱਗਿੰਗ ਨੂੰ ਆਸਾਨ ਬਣਾਉਂਦੀਆਂ ਹਨ।
- CI ਵਿੱਚ ChromeDriver ਲਈ ਮੈਨੂੰ ਕਿਹੜੀਆਂ ਇਜਾਜ਼ਤਾਂ ਦੀ ਲੋੜ ਹੈ?
- ChromeDriver ਨੂੰ ਐਗਜ਼ੀਕਿਊਟ ਅਨੁਮਤੀਆਂ ਦੀ ਲੋੜ ਹੈ, ਦੁਆਰਾ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ sudo chmod +x /usr/local/bin/chromedriver, GitHub ਕਾਰਵਾਈਆਂ ਵਿੱਚ ਸਫਲਤਾਪੂਰਵਕ ਟੈਸਟਾਂ ਨੂੰ ਚਲਾਉਣ ਲਈ।
ਸੀਆਈ/ਸੀਡੀ ਟੈਸਟਾਂ ਲਈ ਹੈੱਡਲੈੱਸ ਕ੍ਰੋਮ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਬਾਰੇ ਅੰਤਿਮ ਵਿਚਾਰ
GitHub ਐਕਸ਼ਨਾਂ 'ਤੇ ਹੈੱਡਲੈੱਸ ਕ੍ਰੋਮ ਨਾਲ ਸੇਲੇਨਿਅਮ ਟੈਸਟਾਂ ਲਈ ਸਹੀ ਸੈੱਟਅੱਪ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਸਮੇਂ ਦੀ ਬਚਤ ਕਰਦਾ ਹੈ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ। "DevToolsActivePort ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" ਵਰਗੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਨਾ CI/CD ਟੈਸਟਿੰਗ ਨੂੰ ਡਿਵੈਲਪਰਾਂ ਲਈ ਵਧੇਰੇ ਸਹਿਜ ਅਤੇ ਘੱਟ ਨਿਰਾਸ਼ਾਜਨਕ ਬਣਾ ਸਕਦਾ ਹੈ।
ਇਕਸਾਰ ਕਰਕੇ ChromeDriver ਅਤੇ ਕ੍ਰੋਮ ਸੰਸਕਰਣ ਅਤੇ ਮੈਮੋਰੀ-ਕੁਸ਼ਲ ਵਿਕਲਪਾਂ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨਾ, ਇਹ ਪਹੁੰਚ ਸੀਮਤ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਕੁਸ਼ਲਤਾ ਨਾਲ ਟੈਸਟਾਂ ਨੂੰ ਚਲਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ। ਇਹ ਇੱਕ ਵਿਹਾਰਕ ਹੱਲ ਹੈ ਜੋ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਟੈਸਟ ਰੁਕਾਵਟਾਂ 🚀 ਬਾਰੇ ਚਿੰਤਾ ਕੀਤੇ ਬਿਨਾਂ ਉਹਨਾਂ ਦੇ ਮੁੱਖ ਕੰਮਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਨ ਦਿੰਦਾ ਹੈ।
ਸੇਲੇਨਿਅਮ ਅਤੇ ChromeDriver ਮੁੱਦਿਆਂ ਦੇ ਨਿਪਟਾਰੇ ਲਈ ਹਵਾਲੇ ਅਤੇ ਸਰੋਤ ਸਮੱਗਰੀ
- ਸੀਆਈ/ਸੀਡੀ ਵਾਤਾਵਰਣਾਂ ਲਈ ਹੈੱਡਲੈੱਸ ਕ੍ਰੋਮ ਵਿੱਚ DevToolsActivePort ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਵਿਸਤ੍ਰਿਤ ਸਮੱਸਿਆ-ਨਿਪਟਾਰਾ ਗਾਈਡ। ਸੇਲੇਨਿਅਮ ਵੈਬ ਡ੍ਰਾਈਵਰ ਦਸਤਾਵੇਜ਼
- ਲਗਾਤਾਰ ਏਕੀਕਰਣ ਸੈੱਟਅੱਪਾਂ ਵਿੱਚ Chrome ਅਤੇ ChromeDriver ਸੰਸਕਰਣਾਂ ਲਈ ਵਿਆਪਕ ਸਥਾਪਨਾ ਅਤੇ ਸੰਰਚਨਾ ਨਿਰਦੇਸ਼, ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤੇ ਗਏ GitHub ਕਾਰਵਾਈ ਦਸਤਾਵੇਜ਼
- ਵਿੱਚ ਉਪਲਬਧ ChromeDriver ਸੈੱਟਅੱਪ, ਅਨੁਕੂਲਤਾ, ਅਤੇ ਸੰਰਚਨਾ ਵਿਕਲਪਾਂ ਲਈ ਕਦਮ-ਦਰ-ਕਦਮ ਹੱਲ WebDriverManager ਦਸਤਾਵੇਜ਼
- CI/CD ਵਿੱਚ ਮੈਮੋਰੀ ਕੁਸ਼ਲਤਾ ਲਈ ਹੈੱਡਲੈੱਸ ਕ੍ਰੋਮ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸਾਂ ਦਾ ਹਵਾਲਾ, ਖਾਸ ਕਰਕੇ ਪ੍ਰਤਿਬੰਧਿਤ ਵਾਤਾਵਰਨ ਵਿੱਚ। 'ਤੇ ਹੋਰ ਪੜ੍ਹੋ ਗੂਗਲ ਕਰੋਮ ਡਿਵੈਲਪਰ ਗਾਈਡ