18

के साथ नेटवर्क थ्रॉटलिंग Google क्रोम 38 ने devtools में नई "Device Mode & Mobile Emulation" कार्यक्षमता पेश की। अनुकरण के लिए एक उपकरण का चयन करने के लिए इसके अलावा, यह भी emulate different network conditions करना संभव है:क्रोम और सेलेनियम

अलग नेटवर्क परिस्थितियों में आपकी साइट के प्रदर्शन का अनुकूलन मोबाइल ऑडियंस के लिए विकसित करने की एक प्रमुख पहलू है।

डिवाइस मोड की नेटवर्क कंडीशनिंग आपको एज साइट, 3 जी और यहां तक ​​कि ऑफ़लाइन समेत नेटवर्क कनेक्शन की विविधता पर आपकी साइट का परीक्षण करने की अनुमति देती है। नेटवर्क थ्रॉटलिंग और विलंबता मैनिपुलेशन लागू करने के लिए प्रीसेट ड्रॉपडाउन से कनेक्शन का चयन करें।

उदाहरण के लिए, हम सेट कर सकते हैं यह अच्छे पुराने दिनों में की तरह बनना - जीपीआरएस 50 केबीपीएस:

enter image description here

अब हम इसके लिए एक अच्छा उपयोग के मामले है - हम के लिए एक आंतरिक अनुप्रयोग है नेटवर्क गति परीक्षण। और मैन्युअल परीक्षण के लिए यह नई इम्यूलेशन कार्यक्षमता बहुत उपयोगी है। लेकिन, हम इसे स्वचालित करना चाहते हैं।

प्रश्न है:

क्या यह संभव है निर्दिष्ट नेटवर्क की स्थिति के साथ सेलेनियम के माध्यम से क्रोम शुरू करने के लिए? क्या यह ऐसा कुछ है जिसे क्रोम वरीयताओं या कमांड लाइन तर्कों के माध्यम से नियंत्रित किया जा सकता है?


निश्चित रूप से simulate slow internet connection के लिए कई विकल्प हैं, लेकिन सवाल क्रोम + सेलेनियम के बारे में विशेष रूप से है।

उत्तर

7

एपीआई ChromeDriver करने के लिए नेटवर्क अनुकरण were added नियंत्रित करने के लिए। और अब थोड़ी देर के लिए उपलब्ध होना चाहिए। जुड़ा हुआ मुद्दा है कि आप कुछ बग सुधार की वजह से संस्करण में कम से कम 2.26 का उपयोग करना चाहिए में comment के अनुसार।

बाइंडिंग लेखन के क्षण में सेलेनियम changelog के अनुसार 2 भाषाओं के लिए उपलब्ध हैं:

  • संस्करण 3.4.0 (commit)
  • संस्करण 3.5.0 ( commit) के रूप में
  • अजगर
  • के रूप में जावास्क्रिप्ट

आप इन अन्य भाषाओं आप शायद खुला मुद्दा/योगदान देना चाहिए ऊपर से एक के लिए इसी तरह के कार्यान्वयन में बाध्यकारी की जरूरत है। अजगर से

उदाहरण उपयोग के नीचे है:

driver.set_network_conditions(
    offline=False, 
    latency=5, # additional latency (ms) 
    download_throughput=500 * 1024, # maximal throughput 
    upload_throughput=500 * 1024) # maximal throughput 
+0

download_throughput और बाइट प्रति सेकंड में upload_throughput है? तो उदाहरण लगभग 5 एमबी/एस? – Cynic

+0

@ क्रिनिक क्रोम देव टूल्स में यह कहता है 'केबी/एस'। मेरी धारणा यह है कि एपीआई का उपयोग करते समय यह वही है। लेकिन मैंने खुद का परीक्षण नहीं किया है। यदि आप इसे समझते हैं तो कृपया उत्तर संपादित करें। –

+0

यह अजीब है। अगर मैं देव उपकरणों का उपयोग पर यह टॉगल करें और http://speedtest.xfinity.com पर की तरह 5 * 1024 और परीक्षण में डालने के लिए मैं 5 एमबीपीएस मिल (आसान बटन शुरू खोजने के लिए)। लेकिन अगर मैं सेलेनियम लिपि में ऐसा करता हूं, तो 5 * 1024 यह मूल रूप से पंजीकृत नहीं होता है। लगभग 5 एमबीपीएस प्राप्त करने के लिए मैं (अगर मैं स्क्रिप्ट तो इंटरनेट नहीं में रुके नहीं है एक 300 एमबीपीएस + पर) कुछ है कि बाहर सबसे ऊपर है लगभग 5 एमबीपीएस प्राप्त करने के लिए 5 * 30000 के आसपास कुछ करने की जरूरत है। हो सकता है कि एक बग हालांकि कि किसी भी रूपांतरण के अनुरूप नहीं है, मैं सोच सकता हूं। – Cynic

14

नहीं, क्रोम प्राथमिकताओं या कमांड लाइन तर्कों के माध्यम से Network Connectivity Emulation को नियंत्रित करना संभव नहीं है। नेटवर्क कनेक्टिविटी इम्यूलेशन बिल्ड-इन क्रोम डीबगर का हिस्सा है। इसे हल करने का एक तरीका तरीका डीबगर को नियंत्रित करना है। यह किसी एक्सटेंशन के माध्यम से या सीधे डीबगर को नियंत्रित करके किया जा सकता है, explanation देखें। हालांकि, यह WebDriver के साथ काम नहीं करेगा। इसका कारण यह है कि केवल एक "डीबग" सत्र हो सकता है और वेबड्राइवर पहले से ही इसका उपयोग कर रहा है, explanation देखें। चूंकि कोई सार्वजनिक इंटरफ़ेस नहीं है, इसलिए वेबड्राइवर के माध्यम से इसे नियंत्रित करने का कोई तरीका नहीं है।

Device Mode & Mobile Emulation के लिए जो बिल्ड-इन डीबगर का भी हिस्सा है, वहां एक सार्वजनिक इंटरफेस (details) है, और इस प्रकार इसे नियंत्रित किया जा सकता है। यह वेबड्राइवर क्षमताओं के माध्यम से किया जा सकता है। दो विकल्प 1) डिवाइस का नाम निर्दिष्ट करें 2) अपने स्वयं के पैरामीटर (सीमित) दर्ज करें।

+0

यह अब सच है, स्वीकार किए जाते हैं समाधान देखते हैं। – tomasz

5

हालांकि यह गंभीर परीक्षण के लिए कार्यक्षमता का एक बहुत ही स्वागत और उपयोगी बिट है, मुझे लगता है कि नेटवर्क सिमुलेशन के पारंपरिक तरीके अभी भी जाने का तरीका हैं। Charles web proxy (बहुत उपयोगी उपकरण - - वाणिज्यिक)

मैं alrady जुड़ा हुआ उन के अलावा 2 समाधान के बारे में पता कर रहा हूँ और अपने खुद के नुस्खा लागू करने लिनक्स यातायात नियंत्रण का उपयोग कर (जैसे LAMPe2e के अध्याय 6 देखें)।

ब्राउज़र के बजाय नेटवर्क कनेक्शन में हस्तक्षेप करके आप ब्राउज़र में उपयोग के स्वतंत्र रूप से प्रभाव का उचित उपाय प्राप्त करते हैं।

आप क्रोम कार्यक्षमता का उपयोग क्यों करना चाहते हैं?

संबंधित मुद्दे