使用Selenium Java在窗口屏幕中拟合对象

使用Selenium Java在窗口屏幕中拟合对象,java,selenium,google-chrome,selenium-chromedriver,mobileemulation,Java,Selenium,Google Chrome,Selenium Chromedriver,Mobileemulation,我正在尝试适应窗口中的所有对象(Chrome浏览器)。当我这样做时手动(我使用的尺寸是1024X786,使用切换栏,但当我使用相同的尺寸进行自动化时,它不会显示与手动相同的尺寸 代码如下: driver = new ChromeDriver(); Map<String, Object> deviceMetrics = new HashMap<String, Object>(); deviceMetrics.put("width", 768); deviceMetrics.

我正在尝试适应窗口中的所有对象(Chrome浏览器)。当我这样做时手动(我使用的尺寸是1024X786,使用切换栏,但当我使用相同的尺寸进行自动化时,它不会显示与手动相同的尺寸

代码如下:

driver = new ChromeDriver();
Map<String, Object> deviceMetrics = new HashMap<String, Object>();
deviceMetrics.put("width", 768);
deviceMetrics.put("height", 1024);
Map<String, Object> mobileEmulation = new HashMap<String, Object>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mobile S");
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("mobileEmulation", mobileEmulation);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
System.out.println("Driver is now ChromeDriver");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

有人能帮忙吗?谢谢

如果您想在窗口中容纳网页内容,而不滚动(如果是一个大页面),那么设置窗口大小是行不通的

您需要做的是调整缩放级别以适应窗口中的所有内容

您可以按如下所示执行此操作:

WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));
html.sendKeys(Keys.chord(Keys.CONTROL, "0"));
确保随后按如下所示重置缩放级别:

WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));
html.sendKeys(Keys.chord(Keys.CONTROL, "0"));
这里发生的基本情况与您在专注于浏览器的同时按下键盘上的Control和-时发生的情况相同


如果这符合您的目的,请尝试一下。

如果您想在窗口中容纳网页内容而不滚动(如果它是一个大页面),那么设置窗口的大小是行不通的

您需要做的是调整缩放级别以适应窗口中的所有内容

您可以按如下所示执行此操作:

WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));
html.sendKeys(Keys.chord(Keys.CONTROL, "0"));
确保随后按如下所示重置缩放级别:

WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));
html.sendKeys(Keys.chord(Keys.CONTROL, "0"));
这里发生的基本情况与您在专注于浏览器的同时按下键盘上的Control和-时发生的情况相同


如果这符合您的目的,请尝试一下。

您需要在
ChromeOptions
类的实例中通过
mobileEmulation
相关配置,如下所示:

Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 768);
deviceMetrics.put("height", 1024);

Map<String, Object> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19");

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
WebDriver driver = new ChromeDriver(chromeOptions);
Map deviceMetrics=new HashMap();
设备测量。放置(“宽度”,768);
设备测量放置(“高度”,1024);
Map mobileEmulation=new HashMap();
mobileEmulation.put(“deviceMetrics”,deviceMetrics);
mobileEmulation.put(“用户代理”、“Mozilla/5.0(Linux;Android 4.2.1;en-us;Nexus 5 Build/JOP40D)AppleWebKit/535.19(KHTML,类似Gecko)Chrome/18.0.1025.166 Mobile Safari/535.19”);
ChromeOptions ChromeOptions=新的ChromeOptions();
色度选项。设置实验选项(“移动模拟”,移动模拟);
WebDriver驱动程序=新的ChromeDriver(chromeOptions);
注意:使用移动仿真在桌面上测试移动网站可能会很有用,但测试人员应该意识到存在许多细微的差异,例如:

  • 完全不同的GPU,这可能会导致大的性能变化
  • 未模拟移动用户界面(尤其是隐藏url栏会影响页面高度)
  • 不支持消歧弹出窗口(在其中选择几个触摸目标之一)
  • 许多硬件API(例如,OrientionChange事件)不可用
参考文献

太长,读不下去了
移动仿真存在一个已知问题

您需要在
ChromeOptions
类的实例中传递
移动仿真
相关配置,如下所示:

Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 768);
deviceMetrics.put("height", 1024);

Map<String, Object> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19");

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
WebDriver driver = new ChromeDriver(chromeOptions);
Map deviceMetrics=new HashMap();
设备测量。放置(“宽度”,768);
设备测量放置(“高度”,1024);
Map mobileEmulation=new HashMap();
mobileEmulation.put(“deviceMetrics”,deviceMetrics);
mobileEmulation.put(“用户代理”、“Mozilla/5.0(Linux;Android 4.2.1;en-us;Nexus 5 Build/JOP40D)AppleWebKit/535.19(KHTML,类似Gecko)Chrome/18.0.1025.166 Mobile Safari/535.19”);
ChromeOptions ChromeOptions=新的ChromeOptions();
色度选项。设置实验选项(“移动模拟”,移动模拟);
WebDriver驱动程序=新的ChromeDriver(chromeOptions);
注意:使用移动仿真在桌面上测试移动网站可能会很有用,但测试人员应该意识到存在许多细微的差异,例如:

  • 完全不同的GPU,这可能会导致大的性能变化
  • 未模拟移动用户界面(尤其是隐藏url栏会影响页面高度)
  • 不支持消歧弹出窗口(在其中选择几个触摸目标之一)
  • 许多硬件API(例如,OrientionChange事件)不可用
参考文献

太长,读不下去了 移动仿真存在一个已知问题