1
我正嘗試在移動仿真模式下啓動chrome,並且還希望在啓動發生之前設置用戶代理。我已經找到了一次一次完成這個操作的方法,但無法對同一個chrome實例執行此操作。 以下是我的代碼:如何在使用Java的Selenium中設置多個期望的功能?
String useragent="Mozilla/5.0 (Windows NT 6.1\\; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 WFBTesting";
Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Google Nexus 5");
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("mobileEmulation", mobileEmulation);
ChromeOptions options = new ChromeOptions();
options.addArguments("--user-agent="+useragent);
options.addArguments("--test-type");
options.addArguments("--allow-running-insecure-content");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
//capabilities.setCapability(ChromeOptions.CAPABILITY,(chromeOptions));
capabilities.setCapability(ChromeOptions.CAPABILITY,options);
WebDriver driver = new ChromeDriver(capabilities);
在上述代碼中,我可以通過選擇或chromeOptions在 「capabilities.setCapability(ChromeOptions.CAPABILITY,選項);」但是如果使用chromeOptions寫入兩個setCapability方法,其中一個使用選項,另一個使用chromeOptions,但其中只有一個對於啓動的chrome會話有效,而不是兩者。請建議設置這兩種功能並啓動chrome會話的最佳方式。
編輯 作爲建議我嘗試以下操作: 再次感謝@Cyildirim您的答覆。我用下面的代碼我的腳本這個時候:
Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Google Nexus 5");
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("args", Arrays.asList("user-agent=Mozilla/5.0 (Windows NT 6.1\\; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 WFBTesting","test-type","allow-running-insecure-content"));
chromeOptions.put("mobileEmulation", mobileEmulation);DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY,(chromeOptions));
但是,即使使用上述,我不能得到用戶配置文件設置正確。只有移動仿真功能正在設置。如果我在數組中寫入useragent不正確,你能糾正我嗎?或任何其他建議,使其工作。
你好@Cyildirim,是的,我嘗試過,會發生什麼,它只會將Desired Capability設置爲移動仿真模式或用戶代理,然後跳過另一個。如果你看到我的代碼,我已經評論過一個capabilities.setCapability語句。所以是的,我嘗試過,沒有它沒有工作。 –
我在這裏發現你的靈魂:https://stackoverflow.com/questions/38612157/adding-arguments-to-chromedriver-mobile-emulation-java。 Actualy已創建鉻選項作爲Map的替代選項。你可以這樣處理你的情況。 – cyildirim
再次感謝@Cyildirim的回覆。請參閱說明(我添加了更多信息,包括您的建議)。它仍然不適合我。 –