2

Comment définir l'émulation mobile pour la vue Nexus 5 dans le pilote chrome géré par Serenity?Définition du nom du périphérique dans le fichier serenity.properties pour le pilote chrome

J'ai essayé de passer par ce lien: https://johnfergusonsmart.com/configuring-chromedriver-easily-with-serenity-bdd/

qui expliquent la définition des préférences pour le chrome.

Chrome preferences 
You can also provide more advanced options using the setExperimentalOption() method: 

Map<String, Object> chromePrefs = new HashMap<String, Object>(); 
chromePrefs.put("download.default_directory", downLoadDirectory); 
chromePrefs.put("profile.default_content_settings.popups", 0); 
chromePrefs.put("pdfjs.disabled", true); 
ChromeOptions options = new ChromeOptions(); 
options.setExperimentalOption("prefs", chromePrefs); 

In Serenity, you would pass these using properties prefixed with the chrome_preferences prefix, e.g. 

chrome_preferences.download.default_directory = /my/download/directory 
chrome_preferences.profile_default_content_settings.popups = 0 
chrome_preferences.pdfjs.disabled=true 

De là, j'essayé de placer le mobileEmulation comme

chrome.capabilities.mobile_emulation.device_name= Google Nexus 5 chrome.options.mobileEmulation.deviceName= Google Nexus 5

et quelques autres variantes logiques, mais aucun d'entre eux ont réussi.

Répondre

0

Le meilleur moyen que j'ai trouvé pour m'aider dans ce problème est de créer un WebDriver personnalisé.

J'ai dû créer une classe qui étend DriverSource. Et puis le lier au fichier Serenity Properties. Cela me donnera le conducteur dont j'ai besoin.

http://www.thucydides.info/docs/serenity/#_custom_webdriver_implementations

Vous pouvez ajouter votre propre fournisseur de WebDriver personnalisé en implémentant l'interface de DriverSource. Tout d'abord, vous devez configurer les propriétés système suivantes (par exemple dans votre fichier serenity.properties):

webdriver.driver = provided 
webdriver.provided.type = mydriver 
webdriver.provided.mydriver = com.acme.MyPhantomJSDriver 
thucydides.driver.capabilities = mydriver 

Votre pilote personnalisé doit implémenter l'interface DriverSource, comme le montre ici:

public class MyPhantomJSDriver implements DriverSource { 

    @Override 
    public WebDriver newDriver() { 
     try { 
      DesiredCapabilities capabilities = DesiredCapabilities.phantomjs(); 
      // Add 
      return new PhantomJSDriver(ResolvingPhantomJSDriverService.createDefaultService(), 

capacités); Catch (IOException e) { throw new Erreur (e); }}

 @Override 
    public boolean takesScreenshots() { 
     return true; 
    } 
} 

Ce pilote va maintenant prendre des captures d'écran normalement.