Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium-移动仿真-如何在自动化仿真器的同时将用户代理添加到Chrome选项?_Java_Selenium_Chrome Options_Mobile Emulator - Fatal编程技术网

Java Selenium-移动仿真-如何在自动化仿真器的同时将用户代理添加到Chrome选项?

Java Selenium-移动仿真-如何在自动化仿真器的同时将用户代理添加到Chrome选项?,java,selenium,chrome-options,mobile-emulator,Java,Selenium,Chrome Options,Mobile Emulator,下面是我添加的功能。我得到了一个谷歌复述卡 在我的网站,可以通过添加用户代理侵入 但是即使在添加了用户代理之后,我仍然可以得到验证码。还有其他方法可以添加它吗 Map<String, String> mobileEmulation = new HashMap<>(); mobileEmulation.put("deviceName", "Pixel 2"); Map<String, Object> chromeOptions = new HashMap<

下面是我添加的功能。我得到了一个谷歌复述卡 在我的网站,可以通过添加用户代理侵入

但是即使在添加了用户代理之后,我仍然可以得到验证码。还有其他方法可以添加它吗

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);
Map mobileEmulation=new HashMap();
mobileEmulation.put(“设备名称”、“像素2”);
Map chromeOptions=new HashMap();
chromeOptions.put(“移动模拟”,移动模拟);
chromeOptions.put(“args”,
asList(“禁用捆绑的ppapi闪存”,
“禁用扩展”,
“配置文件目录=默认值”,
“禁用插件发现”,
“--用户代理=“+userAgent”);
ChromeOptions co=新的ChromeOptions();
co.addArguments(“mobileEmulation=“+mobileEmulation”);
DesiredCapabilities=DesiredCapabilities.chrome();
能力。设置能力(色度选项。能力,色度选项);
setProperty(“webdriver.chrome.driver”,RunConfig.chrome\u driver\u EXE);
驱动程序=新的色度驱动程序(功能);

您可以在Chrome web浏览器中使用以下配置进行移动仿真:

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);
公共类手机模拟测试{
公共静态WebDriver;
@以前
公共作废设置(){
WebDriverManager.chromedriver().setup();
}
@试验
public void emulatorTest()引发InterruptedException{
Map mobileEmulation=new HashMap();
mobileEmulation.put(“deviceName”、“iPhone6”);
ChromeOptions ChromeOptions=新的ChromeOptions();
色度选项。设置实验选项(“移动模拟”,移动模拟);
驱动器=新的色度驱动器(色度选项);
驱动程序。获取(“https://www.google.co.uk");
}
}
添加网络潜水员管理器依赖项

我正在开发的网站有一个单独的用户代理。它有助于侵入验证码。知道在哪里添加它吗?有一个设置,对于特定的用户代理,captcha不会出现。要从该用户代理发送请求,我给出的代码将起作用。这对我来说是有效的,在这里有效的主要东西是你的代码中缺少的一点;请参见如何在此处传递useragent的示例mobileEmulation.put(“useragent”、“Mozilla/5.0(Linux;Android 8.0.0;“+”Pixel 2 XL Build/OPD1.170816.004)AppleWebKit/537.36(KHTML,如Gecko)”+“Chrome/67.0.3396.99 Mobile Safari/537.36”);你有没有试过不带符号的用户代理???
// co.addArguments("mobileEmulation=" + mobileEmulation);
co.setExperimentalOption("mobileEmulation", mobileEmulation);
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");
    }
}