Selenium - мобильная эмуляция -Как добавить агента пользователя в параметры Chrome при автоматизации эмулятора?

Ниже приведены возможности, которые я добавил. Я получаю Google ReCaptcha на моем сайте, который может быть нарушен путем добавления агента пользователя. Но даже после добавления пользовательского агента я все еще получаю капчу. Есть ли другой способ добавить его?

            Map<String, String> mobileEmulation = new HashMap<>();
            mobileEmulation.put("deviceName", "Pixel 2");

            Map<String, Object> chromeOptions = new HashMap<>();
            chromeOptions.put("mobileEmulation", mobileEmulation);



            chromeOptions.put("args", Arrays.asList("disable-bundled-ppapi-flash",
            "disable-extensions", "profile-directory=Default", "disable-plugins-discovery",
                    "--user-agent=" + userAgent));

            ChromeOptions co = new ChromeOptions();
            co.addArguments("mobileEmulation="+mobileEmulation);

            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions);

            System.setProperty("webdriver.chrome.driver", RunConfig.CHROME_DRIVER_EXE);


            driver = new ChromeDriver(capabilities);

3 ответа

Решение

Вы можете использовать приведенную ниже конфигурацию для мобильной эмуляции в браузере Chrome.

Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 1078);
deviceMetrics.put("height", 924);
deviceMetrics.put("pixelRatio", 3.0);
Map<String, Object> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 8.0.0;" +
"Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML,
like Gecko) " +
"Chrome/67.0.3396.99 Mobile Safari/537.36");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation",mobileEmulation);
driver = new ChromeDriver(chromeOptions);

@Edit- вместо добавления аргумента setExpermentalOption, который будет использоваться

// co.addArguments("mobileEmulation="+mobileEmulation);
co.setExperimentalOption("mobileEmulation",mobileEmulation);
      public class DeviceEmulation {

    @Test
    public void deviceemulation() {
        Map<String, String> mobileEmulation = new HashMap<>();
        mobileEmulation.put("deviceName", "Pixel 2");
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("mobileEmulation", mobileEmulation);
        options.addArguments("remote-allow-origins=*");
        WebDriver driver = new ChromeDriver(options);
        driver.get(helper.Pages.Home);
        Demohelper.pause();
    }
}
      public class mobileEmulatorTest {

    public static WebDriver driver;

    @Before
    public void setUp(){
        WebDriverManager.chromedriver().setup();
    }

    @Test
    public void emulatorTest() throws InterruptedException {
        Map<String, String> mobileEmulation = new HashMap<>();
        mobileEmulation.put("deviceName", "iPhone 6");

        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);

        driver = new ChromeDriver(chromeOptions);
        driver.get("https://www.google.co.uk");
    }
}

Добавить зависимость WebDiver Manager https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager

Другие вопросы по тегам