2016-11-01 21 views
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不正確,你能糾正我嗎?或任何其他建議,使其工作。

回答

1

你試過設置它們嗎?

capabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions); 
capabilities.setCapability(ChromeOptions.CAPABILITY,options); 
+0

你好@Cyildirim,是的,我嘗試過,會發生什麼,它只會將Desired Capability設置爲移動仿真模式或用戶代理,然後跳過另一個。如果你看到我的代碼,我已經評論過一個capabilities.setCapability語句。所以是的,我嘗試過,沒有它沒有工作。 –

+0

我在這裏發現你的靈魂:https://stackoverflow.com/questions/38612157/adding-arguments-to-chromedriver-mobile-emulation-java。 Actualy已創建鉻選項作爲Map的替代選項。你可以這樣處理你的情況。 – cyildirim

+0

再次感謝@Cyildirim的回覆。請參閱說明(我添加了更多信息,包括您的建議)。它仍然不適合我。 –

相關問題