我正在尝试从Selenium 3升级到Selenium 4。这些功能和所有的功能都可以在沙司实验室远程运行,甚至在本地也很好,但是当涉及到设备(Android/Mobile和iOS Ipad/Mobile)时,我得到了iOS。有人能帮忙吗?
功能
else if (!BaseTest.isLocal && BaseTest.Devices) {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("appiumVersion", "1.17.1");
capabilities.setCapability("deviceOrientation", "portrait");
capabilities.setCapability("browserName", browser);
capabilities.setCapability("browserVersion", version);
capabilities.setCapability("platformName", os);
capabilities.setCapability("seleniumVersion", "4.1.0");
capabilities.setCapability("deviceName", devicename);
capabilities.setCapability("platformVersion", platformversion);
capabilities.setCapability("name", methodName);
capabilities.setCapability("autoAcceptAlerts", "true");
System.out.println("pop-up alerts disabled for IOS");
if (browser.toLowerCase().contains("chrome")) {
ChromeOptions options = new ChromeOptions();
options.addArguments("disable-translate");
options.addArguments("disable-translate-new-ux");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
}
if (buildTag != null) {
capabilities.setCapability("build", buildTag);
}
// Launch remote browser and set it as the current thread
webDriver.set(new RemoteWebDriver(
new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com:443/wd/hub"),
capabilities));码
private ThreadLocal<WebDriver> webDriver = new ThreadLocal<WebDriver>();
public WebDriver getWebDriver() {
if (!BaseTest.isLocal) {
return webDriver.get();
} else {
return localWebDriver;
}
}误差
失败: com.dell.tnt.tests.WFTTests.Selenium_4_Test.Selenium4(java.lang.String,Selenium4("Chrome“、”最新版本“、"Android”、"7.1“、”三星Galaxy Tab A 10 GoogleAPI仿真器“)抛出java.lang.InterruptedException、com.dell.tnt.exceptions.OfferNotFoundException,java.io.IOException、java.lang.NullPointerException、java.lang.IndexOutOfBoundsException。( org.openqa.selenium.UnsupportedCommandException:) '/wd/hub/session/XXXXXXXX-XXXX-XXXX-XXXX-XXXXf7ad4561/window/new‘没有映射到有效资源
ErrorImage
试用版:
// Mobile Devices
MutableCapabilities caps = new MutableCapabilities();
caps.setCapability("platformName", os);
caps.setCapability("deviceOrientation", "portrait");
caps.setCapability("browserName", browser);
caps.setCapability("appium:deviceName", devicename);
caps.setCapability("appium:platformVersion", platformversion);
MutableCapabilities sauceOptions = new MutableCapabilities();
sauceOptions.setCapability("name", methodName);
sauceOptions.setCapability("appiumVersion", "1.17.1");
caps.setCapability("sauce:options", sauceOptions);
if (buildTag != null) {
caps.setCapability("build", buildTag);
}
// Launch remote browser and set it as the current thread
webDriver.set(new RemoteWebDriver(
new URL("https://" + username + ":" + accesskey + "@ondemand.saucelabs.com:443" + "/wd/hub"),
caps));**错误Error1
Saucelab:苏克拉布
发布于 2022-04-07 19:11:31
更新:我忙于确保设置给您一个有效的w3c会话,这是该命令在桌面测试中工作所必需的。
显然,问题是Appium现在根本不支持window/new路由。Appium团队已经意识到了这一点,他们将在将来的版本中添加它(然后它将只在安卓上工作,而不是iOS)。Appium杂志:https://github.com/appium/appium/issues/16749
这里有几件事。
对于移动浏览器,您可以在本地使用Selenium代码,但是您的代码将被发送到Appium服务器,而不是Sauce Labs VM/设备上的Selenium服务器。它期望使用Selenium 4实现有效的w3c兼容功能。
对于w3c & Selenium 4,理论上一切都应该直接使用浏览器选项类;没有DesiredCapabilities,只有ChromeOptions等等。
至于Sauce上有哪些功能可用,以及它们是如何使用的,我最近更新了这个文档,因此应该是最新的:https://docs.saucelabs.com/dev/test-configuration-options/。
一种很好的方法是使用Sauce Labs平台Configurator获得基线:https://saucelabs.com/platform/platform-configurator注意,这是用于使用Selenium代码,而不是Appium代码。另外,这也适用于模拟器/模拟器代码。真正的设备是相似的,只是有不同的设备名称。最后,它使用MutableCapabilities而不是浏览器选项类,因为这更容易在后端生成,而不是因为它是首选的。
看起来会是这样的:
MutableCapabilities caps = new MutableCapabilities();
caps.setCapability("platformName", "iOS");
caps.setCapability("browserName", "Safari");
caps.setCapability("appium:deviceName", "iPhone Simulator");
caps.setCapability("appium:platformVersion", "15.4");
MutableCapabilities sauceOptions = new MutableCapabilities();
sauceOptions.setCapability("appiumVersion", "1.22.3");
caps.setCapability("sauce:options", sauceOptions);最后,您应该更新您的端点,因为旧的端点在w3c + Real:https://docs.saucelabs.com/basics/data-center-endpoints/#us-west-data-center中有一些问题
https://stackoverflow.com/questions/71782096
复制相似问题