मोबाइल एम्युलेशन

Chrome, उपयोगकर्ताओं को डेस्कटॉप से मोबाइल डिवाइस पर Chrome को एम्युलेट करने की सुविधा देता है Chrome के वर्शन पर Chrome DevTools के साथ डिवाइस मोड. यह सुविधा वेब डेवलपमेंट को तेज़ी से पूरा करता है. इससे डेवलपर तुरंत यह टेस्ट कर सकते हैं कि कोई वेबसाइट रेंडर करने के लिए, किसी असली डिवाइस की ज़रूरत नहीं होती. ChromeDriver यह कर सकता है साथ ही, "mobileEmulation" वाले डिवाइसों को एम्युलेट करें क्षमता के साथ, जिसे शब्दकोश की वैल्यू.

DevTools की तरह ही, ChromeDriver में मोबाइल एम्युलेशन को चालू करने के दो तरीके हैं:

  • किसी ऐसे डिवाइस की जानकारी दें जिसके बारे में आपको जानकारी है
  • डिवाइस की अलग-अलग विशेषताएं तय करना

"mobileEmulation" का फ़ॉर्मैट 'शब्दकोश' इस बात पर निर्भर करता है कि कौनसा तरीका ज़रूरी है.

किसी ज्ञात मोबाइल डिवाइस को दर्ज करें

किसी खास डिवाइस की मदद से डिवाइस एम्युलेशन चालू करने के लिए, "mobileEmulation" शब्दकोश में "deviceName" होना चाहिए. "deviceName" की वैल्यू के तौर पर, DevTools Emulated डिवाइसों की सेटिंग से डिवाइस का कोई मान्य नाम इस्तेमाल करें.

डिवाइसों के स्क्रीनशॉट की सेटिंग

Java

Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "Nexus 5");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
WebDriver driver = new ChromeDriver(chromeOptions);

रुबी

mobile_emulation = { "deviceName" => "Nexus 5" }
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
   "chromeOptions" => { "mobileEmulation" => mobile_emulation })
driver = Selenium::WebDriver.for :remote, url: 'http://localhost:4444/wd/hub',
desired_capabilities: caps

Python

from selenium import webdriver
mobile_emulation = { "deviceName": "Nexus 5" }
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities = chrome_options.to_capabilities())

डिवाइस की अलग-अलग विशेषताएं तय करना

अलग-अलग एट्रिब्यूट तय करके, मोबाइल एम्युलेशन को चालू किया जा सकता है. कॉन्टेंट बनाने "मोबाइल एम्युलेशन" शब्दकोश में deviceMetrics, clientHints शामिल हो सकते हैं शब्दकोश और एक userAgent स्ट्रिंग.

"deviceMetrics" में इन डिवाइस मेट्रिक के बारे में बताना ज़रूरी है शब्दकोश:

  • &quot;width&quot; - डिवाइस की स्क्रीन की चौड़ाई (पिक्सल में)
  • "ऊंचाई" - डिवाइस की स्क्रीन की पिक्सल में ऊंचाई
  • "pixelRatio" - डिवाइस का पिक्सल रेशियो
  • "टच" - टच इवेंट को एम्युलेट करें या नहीं. यह वैल्यू डिफ़ॉल्ट रूप से 'सही' पर सेट होती है. इसे हटाया जा सकता है.
  • "मोबाइल" - ब्राउज़र को मोबाइल उपयोगकर्ता एजेंट की तरह काम करना चाहिए या नहीं (ओवरले स्क्रोलबार, स्क्रीन की दिशा वाले इवेंट छोड़ देना, व्यूपोर्ट के हिसाब से कॉन्टेंट को छोटा करना वगैरह). यह वैल्यू डिफ़ॉल्ट रूप से 'सही' पर सेट होती है. इसे हटाया जा सकता है.

"clientHints" शब्दकोश में ये एंट्री हो सकती हैं:

  • "प्लैटफ़ॉर्म" - ऑपरेटिंग सिस्टम. यह या तो ज्ञात मान ("Android", "Chrome OS", "Chromium OS", "FUCsia", "Linux", "macOS", "Windows") हो सकता है, जो दिए गए प्लेटफ़ॉर्म पर Chrome द्वारा लौटाए गए मान से सटीक रूप से मेल खाता हो या यह उपयोगकर्ता द्वारा निर्धारित मान हो सकता है. यह वैल्यू ज़रूरी है.
  • "मोबाइल" - ब्राउज़र को मोबाइल या डेस्कटॉप रिसॉर्स वर्शन के लिए अनुरोध करना चाहिए या नहीं. आम तौर पर, Android वाले मोबाइल फ़ोन पर Chrome चलाने पर, यह वैल्यू 'सही' पर सेट हो जाती है. टैबलेट के Android डिवाइस पर Chrome, इस वैल्यू को 'गलत' पर सेट करता है. डेस्कटॉप डिवाइस पर Chrome भी इस वैल्यू को 'गलत है' पर सेट करता है. इस जानकारी का इस्तेमाल, सबसे सही एम्युलेशन तय करने के लिए किया जा सकता है. यह वैल्यू ज़रूरी है.
  • बाकी एंट्री वैकल्पिक हैं. अगर ये टेस्ट के लिए काम की नहीं हैं, तो इन्हें छोड़ा जा सकता है:
    • "ब्रैंड" - ब्रैंड / मेजर वर्शन पेयर की सूची. अगर मिटाया जाता है, तो ब्राउज़र अपनी वैल्यू का इस्तेमाल करता है.
    • &quot;fullVersionList&quot; - ब्रैंड / वर्शन पेयर की सूची. ऐसा नहीं किया गया कि ब्राउज़र अपनी वैल्यू का इस्तेमाल करता है.
    • "platformVersion" - ओएस वर्शन. डिफ़ॉल्ट तौर पर, खाली स्ट्रिंग होती है.
    • &quot;model&quot; - डिवाइस का मॉडल. डिफ़ॉल्ट तौर पर, खाली स्ट्रिंग होती है.
    • "वास्तुकला" - सीपीयू आर्किटेक्चर. जानी-पहचानी वैल्यू "x86" हैं और "हाथ" है. उपयोगकर्ता कोई भी स्ट्रिंग वैल्यू दे सकता है. डिफ़ॉल्ट तौर पर, खाली स्ट्रिंग होती है.
    • "बिटनेस" - प्लैटफ़ॉर्म बिटनेस. ज्ञात मान "32" हैं और "64" शामिल हैं. उपयोगकर्ता कोई भी स्ट्रिंग वैल्यू दे सकता है. डिफ़ॉल्ट तौर पर, खाली स्ट्रिंग होती है.
    • "वाह64" - Windows 64 पर Windows 32 का एम्युलेटर. एक बूलियन वैल्यू, जो डिफ़ॉल्ट रूप से 'गलत' पर सेट होती है.

ChromeDriver यह अनुमान लगा सकता है कि "userAgent" "clienthints" से मिला मान इंस्टॉल किए गए प्लैटफ़ॉर्म पर: "Android", "Chrome OS", "Chromium OS", "FUCsia", "Linux", "macOS", "Windows". इसलिए, इस वैल्यू को हटाया जा सकता है.

अगर "clienthints" हो शब्दकोश उपलब्ध नहीं है (लेगसी मोड) ChromeDriver अपनी पूरी कोशिश करता है "clienthints" का अनुमान लगाने के लिए "userAgent" से शुरू किया गया है. "userAgent" की जानकारी में अंतर होने की वजह से, यह सुविधा भरोसेमंद नहीं है वैल्यू फ़ॉर्मैट में बदलना होगा.

मोबाइल एम्युलेशन पैनल में उपलब्ध फ़ोन और टैबलेट आपको DevTools सोर्स कोड में मिल जाएगा.

Java

Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 360);
deviceMetrics.put("height", 640);
deviceMetrics.put("pixelRatio", 3.0);
Map<String, Object> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19");
Map<String, Object> clientHints = new HashMap<>();
clientHints.put("platform", "Android");
clientHints.put("mobile", true);
mobileEmulation.put("clientHints", clientHints);
ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation); WebDriver driver = new ChromeDriver(chromeOptions);

रुबी

mobile_emulation = {
   "deviceMetrics" => { "width" => 360, "height" => 640, "pixelRatio" => 3.0 },
   "userAgent" => "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
   "clientHints" => { "platform" => "Android", "mobile" => true}
}
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => mobile_emulation)
driver = Selenium::WebDriver.for :remote, url: 'http://localhost:4444/wd/hub', desired_capabilities: caps

Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
mobile_emulation = {
   "deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 },
   "userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
   "clientHints": {"platform": "Android", "mobile": True} }
chrome_options = Options()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(chrome_options = chrome_options)

पूरी तरह से मोबाइल एम्युलेशन कॉन्फ़िगरेशन का उदाहरण:

JSON

"mobileEmulation": {
  "userAgent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/111.0.0.0 Mobile Safari/537.36",
  "deviceMetrics": {
     "mobile": true,
     "touch": true,
     "width": 412,
     "height": 823,
     "pixelRatio": 1.75
  },
  "clientHints": {
     "brands": [
        {"brand": "Google Chrome", "version": "111"},
        {"brand": "Chromium", "version": "111"}
     ],
     "fullVersionList": [
        {"brand": "Google Chrome", "version": "111.0.5563.64"},
        {"brand": "Chromium", "version": "111.0.5563.64"}
     ],
     "platform": "Android",
     "platformVersion": "11",
     "architecture": "arm",
     "model": "lorem ipsum (2022)"
     "mobile": true,
     "bitness": "32",
     "wow64": false
  }
}

मोबाइल एम्युलेशन और असली डिवाइस के बीच का अंतर

मोबाइल एम्युलेटर की मदद से, डेस्कटॉप पर वेबसाइटों की जांच करना मददगार होता है. लेकिन यह वास्तविक डिवाइस पर परीक्षण की पूरी तरह से कॉपी नहीं है. यहां कुछ मुख्य अंतर हैं. जैसे:

  • मोबाइल डिवाइसों में अक्सर अलग जीपीयू होता है. इस वजह से, परफ़ॉर्मेंस में बड़े बदलाव हो सकते हैं.
  • मोबाइल के यूज़र इंटरफ़ेस (यूआई) को एम्युलेट नहीं किया गया. खास तौर पर, पता बार छिपाने से पेज की ऊंचाई पर असर पड़ता है.
  • साफ़ तौर पर जानकारी देने वाले पॉप-अप (जहां, टच टारगेट में से किसी एक को चुना जाता है) की सुविधा काम नहीं करती है.
  • कई हार्डवेयर एपीआई उपलब्ध नहीं हैं. जैसे, orientationchange इवेंट.