首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS网络测试w/ Appium

iOS网络测试w/ Appium
EN

Stack Overflow用户
提问于 2015-11-05 16:01:51
回答 2查看 440关注 0票数 0
  • 我用的是真正的设备
  • 我正在尝试基于web的测试。
  • 我为Android开发了一套功能齐全的TestNG套件

我不知道如何在iOS上执行相同的测试。

我得到的错误是:

代码语言:javascript
复制
org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Command failed: /bin/sh -c ideviceinstaller -u A7BD67F34FA1B94651C832041B4DEE720DC2CBC1 -i /var/folders/0x/z8gpmw7923d8gw9k14rdj0gh3qx1yt/T/115105-3319-10zvjv1/SafariLauncher.app
No iOS device found, is it plugged in?)

我使用appium --nodeconfig /path/to/config.json -p 4623 --safari启动selenium网格节点,并使用JSON信任:

代码语言:javascript
复制
{
"capabilities":
[
{
"browserName":"Safari",
"deviceName": "iPod 5",
"udid":"A7BD67F34FA1B94651C832041B4DEE720DC2CBC1",
"version":"8.4.1",
"maxInstances": 5,
"platform":"MAC",
"platformName": "iOS"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":10000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", 
"url":"http://0.0.0.0:4623/wd/hub",
"maxSession": 5,
"port": 4623,
"host": "0.0.0.0",
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "localhost"
}

创建IOSDriver的java是:

代码语言:javascript
复制
public static IOSDriver getIOSDriver(String udid) throws MalformedURLException{

        String SELENIUM_HUB_URL = "http://localhost:4444/wd/hub";
        ThreadLocal<IOSDriver> driver = null;  

        DesiredCapabilities capabilities = new DesiredCapabilities();   
        capabilities.setCapability("deviceName", "iPod 5");
        capabilities.setCapability("udid", udid);
        capabilities.setPlatform(Platform.MAC);
        capabilities.setCapability("verison", "8.4.1");
        capabilities.setCapability("platfromName", "iOS");
        capabilities.setCapability("browserName", "Safari");

        try {
            driver = new ThreadLocal<IOSDriver>();
            driver.set(new IOSDriver(new URL(SELENIUM_HUB_URL),
                    capabilities));
        } catch (MalformedURLException e) {
            System.out.println("Tackle Issue with RemoteDriverSetup");
        }
        driver.get().manage().timeouts()
                .pageLoadTimeout(20L, TimeUnit.SECONDS);
        driver.get().manage().timeouts()
                .implicitlyWait(20L, TimeUnit.SECONDS);

        return driver.get();
    }

为了澄清,设备插入的,safariLauncher是从xCode部署的,它可以找到设备。

我是不是错过了一些最基本的东西?

谢谢你的帮忙,

利亚姆

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-06 10:02:16

所以我找到了解决这个问题的方法。iTunes给出的设备的UDID为A7BD67F34FA1B94651C832041B4DEE720DC2CBC1

但是,xCode UDID是a7bd67f34fa1b94651c832041b4dee720dc2cbc1 (相同但都是小写):

通过使用xCode版本的UDID解决了这个问题。这是在使用xCode的ctrl+shift+2中找到的。

所以功能如下所示:

代码语言:javascript
复制
{
"capabilities":
[
{
"browserName":"Safari",
"deviceName": "iPod 5",
"udid":"a7bd67f34fa1b94651c832041b4dee720dc2cbc1",
"version":"8.4.1",
"maxInstances": 5,
"platform":"MAC",
"platformName": "iOS"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":10000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", 
"url":"http://0.0.0.0:4623/wd/hub",
"maxSession": 5,
"port": 4623,
"host": "0.0.0.0",
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "localhost"
}
}

testNG.xml看起来是这样的:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="tests" thread-count="2">
  <test name="Nexus 7">
    <parameter name="udid"  value="08da76c1" />
    <classes>
      <class name="testNG.TestOne"/>
    </classes>
  </test> <!-- Test -->
  <test name="HTC desrire">
    <parameter name="udid"  value="SH48CWT00563" />
    <classes>
      <class name="testNG.TestOne"/>
    </classes>
  </test> <!-- Test -->
    <test name="iPod Touch">
    <parameter name="udid"  value="a7bd67f34fa1b94651c832041b4dee720dc2cbc1" />
    <classes>
      <class name="testNG.TestTwo"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

我觉得这很奇怪,但似乎很管用。

利亚姆。

票数 2
EN

Stack Overflow用户

发布于 2015-11-06 08:37:33

您不需要提供包id- capabilities.setCapability("bundleID","com.safariLauncher.safariLauncher");

Safari发射器在设备中自动启动,然后重定向到真实设备中的本地safari应用程序。另外,您不需要从xcode构建safari发射器。Safari与appium安装本身一起打包(您需要apple证书并将其作为reset.sh脚本的参数提供),.Appium文档解释了所有步骤。我建议你看一下appium文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33549297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档