URL '/session' 没有映射到有效资源 |如何使用 winAppDriver 运行 桌面应用程序测试 / windows 使用 java 的应用程序驱动程序?
The URL '/session' did not map to a valid resource | How to run desktop application test using winAppDriver / windows application driver using java?
我正在尝试 运行 使用 Windows 应用程序驱动程序 (winAppDriver)[=] 在 windows10 上对 windows 计算器应用程序进行自动化测试、appium 和 java 如下例:https://github.com/Microsoft/WinAppDriver/tree/master/Samples/Java/CalculatorTest,但是当我 运行启动 appium 后进行测试,出现以下错误:
org.openqa.selenium.UnsupportedCommandException: The URL '/session' did not map to a valid resource
Command duration or timeout: 204 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'LKXXXX', ip: '10.88.68.53', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
Driver info: io.appium.java_client.ios.IOSDriver
我的代码如下:
import org.junit.*;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;
import java.net.URL;
import io.appium.java_client.ios.IOSDriver;
public class CalculatorTest {
private static IOSDriver CalculatorSession = null;
private static WebElement CalculatorResult = null;
@BeforeClass
public static void setup() {
try {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app", "C:\Windows\System32\calc.exe");
CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723"), capabilities);
CalculatorSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
CalculatorSession.findElementByName("Clear").click();
CalculatorSession.findElementByName("Seven").click();
CalculatorResult = CalculatorSession.findElementByName("Display is 7 ");
Assert.assertNotNull(CalculatorResult);
}catch(Exception e){
e.printStackTrace();
} finally {
}
}
}
我的开发环境
- Windows 10(已启用开发者模式)
- appium v1.6.5
- java v1.8
- winappdriver v0.9-beta
- IDE - 日食
如果有人能帮我解决这个问题,我会很高兴。
提前致谢。
根据我的测试,当您提供必须使用的系统路径时,windows 中的计算器应用程序无法打开
Microsoft.WindowsCalculator_8wekyb3d8bbwe!App
而且你不需要打开 appium 服务器有 appium 有旧版本的 winappdriver(0.7)
只是说 winappdriver 服务器应该 运行 在后台
经过长时间的研究,我找到了上述问题的答案。我们可以用两种方法解决这个问题。
NOTE: You should start either appium server or winappdriver.exe. Don't try to run both appium and winappdriver at once by your self.
如果你启动appium server,你应该给URI以及下面的IP和端口;
CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
如果你是运行直接winappdriver.exe,你应该只给出IP和winappdriver的端口如下;
CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723"), capabilities);
首先感谢@Vijendran Selvarajah。
对于这个例子:http://appium.io/docs/en/about-appium/getting-started/
需要添加这一行 path: "/wd/hub"
// javascript
const wdio = require("webdriverio");
const assert = require("assert");
const opts = {
port: 4723,
path: "/wd/hub", // fix: The URL '/session' did not map to a valid resource
capabilities: {
platformName: "Android",
platformVersion: "8",
deviceName: "Android Emulator",
app: "/path/to/the/downloaded/ApiDemos.apk",
appPackage: "io.appium.android.apis",
appActivity: ".view.TextFields",
automationName: "UiAutomator2"
}
};
async function main () {
const client = await wdio.remote(opts);
const field = await client.$("android.widget.EditText");
await field.setValue("Hello World!");
const value = await field.getText();
assert.equal(value,"Hello World!");
await client.deleteSession();
}
main();
我将在有关如何使用 Appium 测试 Android 应用程序的功能中与所有部门共享完整的文档和 zip。
我正在尝试 运行 使用 Windows 应用程序驱动程序 (winAppDriver)[=] 在 windows10 上对 windows 计算器应用程序进行自动化测试、appium 和 java 如下例:https://github.com/Microsoft/WinAppDriver/tree/master/Samples/Java/CalculatorTest,但是当我 运行启动 appium 后进行测试,出现以下错误:
org.openqa.selenium.UnsupportedCommandException: The URL '/session' did not map to a valid resource
Command duration or timeout: 204 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'LKXXXX', ip: '10.88.68.53', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
Driver info: io.appium.java_client.ios.IOSDriver
我的代码如下:
import org.junit.*;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;
import java.net.URL;
import io.appium.java_client.ios.IOSDriver;
public class CalculatorTest {
private static IOSDriver CalculatorSession = null;
private static WebElement CalculatorResult = null;
@BeforeClass
public static void setup() {
try {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("app", "C:\Windows\System32\calc.exe");
CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723"), capabilities);
CalculatorSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
CalculatorSession.findElementByName("Clear").click();
CalculatorSession.findElementByName("Seven").click();
CalculatorResult = CalculatorSession.findElementByName("Display is 7 ");
Assert.assertNotNull(CalculatorResult);
}catch(Exception e){
e.printStackTrace();
} finally {
}
}
}
我的开发环境
- Windows 10(已启用开发者模式)
- appium v1.6.5
- java v1.8
- winappdriver v0.9-beta
- IDE - 日食
如果有人能帮我解决这个问题,我会很高兴。
提前致谢。
根据我的测试,当您提供必须使用的系统路径时,windows 中的计算器应用程序无法打开 Microsoft.WindowsCalculator_8wekyb3d8bbwe!App
而且你不需要打开 appium 服务器有 appium 有旧版本的 winappdriver(0.7)
只是说 winappdriver 服务器应该 运行 在后台
经过长时间的研究,我找到了上述问题的答案。我们可以用两种方法解决这个问题。
NOTE: You should start either appium server or winappdriver.exe. Don't try to run both appium and winappdriver at once by your self.
如果你启动appium server,你应该给URI以及下面的IP和端口;
CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
如果你是运行直接winappdriver.exe,你应该只给出IP和winappdriver的端口如下;
CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723"), capabilities);
首先感谢@Vijendran Selvarajah。
对于这个例子:http://appium.io/docs/en/about-appium/getting-started/
需要添加这一行 path: "/wd/hub"
// javascript
const wdio = require("webdriverio");
const assert = require("assert");
const opts = {
port: 4723,
path: "/wd/hub", // fix: The URL '/session' did not map to a valid resource
capabilities: {
platformName: "Android",
platformVersion: "8",
deviceName: "Android Emulator",
app: "/path/to/the/downloaded/ApiDemos.apk",
appPackage: "io.appium.android.apis",
appActivity: ".view.TextFields",
automationName: "UiAutomator2"
}
};
async function main () {
const client = await wdio.remote(opts);
const field = await client.$("android.widget.EditText");
await field.setValue("Hello World!");
const value = await field.getText();
assert.equal(value,"Hello World!");
await client.deleteSession();
}
main();
我将在有关如何使用 Appium 测试 Android 应用程序的功能中与所有部门共享完整的文档和 zip。