我正在使用Selenium 2.44和ChromeDriver 2.13测试网络应用。我正在使用Chromes移动仿真来模拟从移动设备连接。我需要在测试过程中将画面方向从纵向更改为横向,我似乎无法使其正常工作。
尝试将WebDriver扩展为Rotatable的示例代码如下所示,但在尝试强制转换为Rotatable时抛出了ClassCastException。有人可以告诉我,如果我做错了或者ChromeDriver不支持轮换吗?
package test;
import org.openqa.selenium.Rotatable;
import org.openqa.selenium.ScreenOrientation;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.AddRotatable;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
System.setProperty(
"webdriver.chrome.driver",
"Path/To/chromedriver.exe"
);
Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "Google Nexus 4");
Map<String, Object> chromeOptions = new HashMap<>();
chromeOptions.put("mobileEmulation", mobileEmulation);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
capabilities.setCapability(CapabilityType.ROTATABLE, true);
WebDriver driver = new ChromeDriver(capabilities);
driver.get("http://m.rte.ie");
// Try and rotate
Augmenter augmenter = new Augmenter();
augmenter.addDriverAugmentation(CapabilityType.ROTATABLE, new AddRotatable());
WebDriver augmentedDriver = augmenter.augment(driver);
ScreenOrientation currentOrientation = ((Rotatable) augmentedDriver).getOrientation();
System.out.println(String.format("Current Orientation is: %s", currentOrientation));
driver.quit();
}
}
Chrome似乎支持切换方向,如下所示:(https://developer.chrome.com/devtools/docs/device-mode)如果查看上面的部分,&#39;交换维度&#39;。我在浏览器中手动尝试了它,它工作正常。只是想知道ChromeDriver是否不支持Rotatable接口,有没有办法快速更新屏幕尺寸?
答案 0 :(得分:3)
这是一个艰难的。希望这为某人节省了相当多的努力。目前,ChromeDriver仅支持移动仿真模式下的纵向方向。没有任何解决方法可以将它作为选项传递,也无法从javascript触发。
然而,有一个似乎对我有用的解决方案。您需要做的只是使用代表您设备的userAgent选项启动ChromeDriver。例如,以下是iPad仿真的样子:
<page>
<head>
<!-- Remove local resources -->
<remove src="css/styles-m.css" />
</head>
..
</page>
此外,您可能希望设置类似于模拟设备的尺寸。这有点棘手,因为只能在ChromeOptions中设置窗口大小。再次,使用此工具:Chrome viewport dimensions plugin您可以找到正确的分辨率。就我而言,视口的1024x768对应于窗口大小的1039x859。
P.S。它只能在驱动程序启动时完成。无法动态改变方向
答案 1 :(得分:1)
它似乎接受“deviceOrientation”作为容量,其值为“portrait”和“landscape”,但不幸的是,这还没有实现。
等待同样的答案。