Mobil emülasyon

Chrome, kullanıcıların masaüstünden mobil cihazda Chrome'u taklit etmesine olanak tanır. sürümünü etkinleştirerek Chrome'un cihaz modunda kullanın. Bu özellik hızlandırır ve böylece geliştiricilerin bir web sitesinin nasıl daha fazla dönüşüm gerçek bir cihaz gerektirmeden mobil cihazda oluşturulmasıdır. ChromeDriver "mobileEmulation" kullanan cihazlar gibi özelliği, sözlük değeri.

Geliştirici Araçları'nda olduğu gibi, ChromeDriver'da da Mobil Emülasyonu etkinleştirmenin iki yolu vardır:

  • Bilinen bir cihaz belirtin
  • Bağımsız cihaz özelliklerini belirtme

"MobileEmulation" (mobilEmülasyon) biçimi hangi yöntemin gerekli olduğuna bağlıdır.

Bilinen bir mobil cihaz belirtin

Belirli bir cihazla cihaz emülasyonunu etkinleştirmek için "mobileEmulation" sözlük bir "deviceName" içermelidir. "deviceName" değeri olarak DevTools emülasyonlu cihazlar ayarlarından geçerli bir cihaz adı kullanın.

Cihazlar ayarının ekran görüntüsü

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);

Ruby

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())

Bağımsız cihaz özelliklerini belirtme

Mobil emülasyonu ayrı ayrı özellikler belirterek etkinleştirebilirsiniz. İlgili içeriği oluşturmak için kullanılan "mobilEmülasyon" sözlük deviceMetrics, clientHints içerebilir sözlükleri ve bir userAgent dizesi içerir.

"deviceMetrics"te aşağıdaki cihaz metrikleri belirtilmelidir. sözlük:

  • &quot;width&quot; - cihaz ekranının piksel cinsinden genişliği
  • "yükseklik" - cihaz ekranının piksel cinsinden yüksekliği
  • "pixelRatio" - cihazın piksel oranı
  • "dokunma" - dokunma etkinliklerinin emülasyonunun yapılıp yapılmayacağı. Bu değer varsayılan olarak "true" (doğru) değerine ayarlanır ve genellikle atlanabilir.
  • "mobil" - tarayıcının bir mobil kullanıcı aracısı olarak davranması gerekip gerekmediği (yer paylaşımlı kaydırma çubukları, yön etkinlikleri yayma, içeriği görüntü alanına sığacak şekilde küçültme vb.). Bu değer varsayılan olarak "true" (doğru) değerine ayarlanır ve genellikle atlanabilir.

"clientHints" sözlükte aşağıdaki girişler bulunabilir:

  • "platform" - işletim sistemi. Söz konusu platformda çalışan Chrome'un döndürdüğü değerle tam olarak eşleşen bilinen bir değer ("Android", "Chrome OS", "Chromium OS", "Fuchsia", "Linux", "macOS", "Windows") ya da kullanıcı tanımlı bir değer olabilir. Bu değer zorunludur.
  • "mobil" - tarayıcının mobil veya masaüstü kaynak sürümü isteyip istemeyeceğini belirler. Android yüklü bir cep telefonunda çalışan Chrome genellikle bu değeri true olarak ayarlar. Tablet Android cihazdaki Chrome, bu değeri false olarak ayarlar. Masaüstü cihazdaki Chrome da bu değeri false olarak ayarlar. Bu bilgileri, gerçekçi bir emülasyon belirtmek için kullanabilirsiniz. Bu değer zorunludur.
  • Kalan girişler isteğe bağlıdır ve testle ilgili olmadıkları sürece atlanabilir:
    • "markalar" - marka / ana sürüm çiftlerinin listesi. Atlanırsa tarayıcı kendi değerlerini kullanır.
    • &quot;fullVersionList&quot; - marka / sürüm çiftlerinin listesi. Tarayıcının kendi değerlerini kullanması atlanmıştır.
    • "platformVersion" - İşletim sistemi sürümü. Varsayılan olarak boş dize kullanılır.
    • &quot;model&quot; - cihaz modeli. Varsayılan olarak boş dize kullanılır.
    • "mimari" - CPU mimarisi. Bilinen değerler şunlardır: "x86" ve "arm" bulunur. Kullanıcı istediği dize değerini sağlayabilir. Varsayılan olarak boş dize kullanılır.
    • "bitness" - platform bit sayısı. Bilinen değerler: "32" ve "64". Kullanıcı istediği dize değerini sağlayabilir. Varsayılan olarak boş dize kullanılır.
    • "vay64" - Windows 64'te windows 32 emülasyonu. Varsayılan olarak yanlış olan bir boole değeridir.

ChromeDriver, "userAgent" öğesini tahmin edebilir "clientHints" değerindeki değer Şu platformlarda: "Android", "Chrome OS", "Chromium OS", "Fuşya", "Linux", "macOS", "Windows". Dolayısıyla bu değer atlanabilir.

"clientHints" sözlük atlandı (eski mod) ChromeDriver elinden gelenin en iyisini yapar kullanarak "clientHints" "userAgent" etiketinden alınır. "userAgent" öğesinin şirket içi belirsizlikleri nedeniyle bu özellik güvenilir değil değer biçimi.

Mobil emülasyon panelinin altında bulunan telefonlar ve tabletler: Geliştirici Araçları kaynak kodunda bulabilirsiniz.

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);

Ruby

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)

Tam mobil emülasyon yapılandırması örneği:

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
  }
}

Mobil emülasyon ile gerçek cihazlar arasındaki fark

Mobil emülasyon kullanarak masaüstünde web sitelerini test etmek, ancak gerçek cihazda testin mükemmel bir replikası değildir. Aşağıdakiler dahil olmak üzere bazı önemli farklar vardır:

  • Mobil cihazlar genellikle farklı bir GPU'ya sahiptir. Bu durum büyük performans değişikliklerine neden olabilir.
  • Mobil kullanıcı arayüzü taklit edilmez (özellikle, adres çubuğunun gizlenmesi sayfa yüksekliğini etkiler).
  • Açıklama amaçlı pop-up'lar (birkaç dokunma hedefinden birini seçtiğiniz durumlarda) desteklenmez.
  • Birçok donanım API'si (ör. orientationchange etkinliği) kullanılamıyor.