【问题标题】:How to get SafariLauncher to launch Safari on real iPhone如何让 Safari Launcher 在真 iPhone 上启动 Safari
【发布时间】:2014-11-21 20:24:12
【问题描述】:

长话短说,我遵循了这个http://appium.io/slate/en/tutorial/ios.html?java# 教程,现在我有了一个项目。不幸的是,我找不到使用网页运行 appium 的教程。到目前为止,我已经根据自己的需要进行了编辑,也就是说,它会打开 google.com,它可以在模拟器中运行。

我已经在设备上安装了 SafariLauncher。手动单击应用程序时,它确实有效。

但是,当我使用 SafariLauncher 和 appium 时,你可以看出它不起作用。

这是控制台告诉我的 ->

info: [debug] Attempting to run app on real device with UDID 5343fa7f9c04cb60f02cb40f1233073d23dbbbc7
info: [debug] Spawning instruments with command: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate -D /tmp/appium-instruments/instrumentscli0.trace -w 5343fa7f9c04cb60f02cb40f1233073d23dbbbc7 /Users/wroberts/Library/Developer/Xcode/DerivedData/SafariLauncher-fvxpuhbhozeuydcsrdzjhhzlzpsu/Build/Products/Debug-iphoneos/SafariLauncher.app -e UIASCRIPT "/Users/wroberts/Library/Application Support/appium/bootstrap/bootstrap-971fed56c9389ee5.js" -e UIARESULTSPATH /tmp/appium-instruments
info: [debug] And extra without-delay env: {}
info: [debug] And launch timeouts (in ms): {"global":90000}
info: [debug] [INST STDERR] 2014-11-21 15:09:18.206 instruments[19158:3c0b] Error fetching kdebug events
info: [debug] [INSTSERVER] Instruments exited with code 253
info: [debug] Killall instruments
info: [debug] Instruments crashed on startup
info: [debug] We exceeded the number of retries allowed for instruments to successfully start; failing launch
info: [debug] Stopping iOS log capture
info: [debug] Running ios sim reset flow
info: [debug] Killing the simulator process
info: [debug] Killall iPhoneSimulator
info: [debug] Killing any other simulator daemons
info: [debug] On a real device; cannot clean device state
info: [debug] Cleaning up appium session
error: Failed to start an Appium session, err was: Error: Instruments crashed on startup
info: [debug] Error: Instruments crashed on startup
    at Instruments.onInstrumentsExit (/Users/wroberts/dev/differnt_svns/mobile_automation/appium/submodules/appium-instruments/lib/instruments.js:387:31)
    at null.<anonymous> (/Users/wroberts/dev/differnt_svns/mobile_au`enter code here`tomation/appium/submodules/appium-  instruments/lib/instruments.js:308:12)
    at ChildProcess.emit (events.js:98:17)
    at Process.ChildProcess._handle.onexit (child_process.js:809:12)

这是我的相关代码

DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability("appium-version", "1.3.1");

    //capabilities.setCapability("platformVersion", "8.1");

    capabilities.setCapability("platformName", "iOS");

    capabilities.setCapability("deviceName", "Tahir's iPhone");

    capabilities.setCapability("udid", "5343fa7f9c04cb60f02cb40f1233073d23dbbbc7");

    String bundle = "/Users/wroberts/Library/Developer/Xcode/DerivedData/SafariLauncher-fvxpuhbhozeuydcsrdzjhhzlzpsu/Build/Products/Debug-iphoneos/SafariLauncher.app";

    capabilities.setCapability("bundleId", bundle);


    capabilities.setCapability("app", bundle);


    driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);    

    driver.get("http://www.google.com");
    Thread.sleep(20000);

简而言之,任何人都可以让 SafariLauncher 在真实设备上运行吗?

【问题讨论】:

    标签: java ios selenium safari appium


    【解决方案1】:

    如果您想使用 Safari 浏览器运行测试,我认为您只需要设置浏览器名称功能:

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("appium-version", "1.3.1");
    capabilities.setCapability("platformName", "iOS");
    capabilities.setCapability("deviceName", "Tahir's iPhone");
    capabilities.setCapability("udid", "your_udid");
    capabilities.setCapability("bundleId", bundle);
    capabilities.setCapability("browserName", "safari");
    driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);    
    
    driver.get("http://www.google.com");
    Thread.sleep(20000);
    

    如果您只想在真机上使用 Safari 浏览器,则不需要其他 SafariLaucher 设置。

    来自 Saucelabs 的 SafariTest 示例代码表明:

    https://github.com/appium/sample-code/blob/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/SafariTest.java

    【讨论】:

    • 那是模拟器,不是真机。
    • 我想说的是,也许你根本不需要 SafariLauncher。该示例适用于模拟器,但您可以对真实设备执行相同操作。我会更新答案以反映这一点。
    【解决方案2】:

    您应该使用 XCUITest 而不是 SafariLauncher 来启动 Safari

    1. 需要安装的软件

      目前在真实设备上运行 iOS 测试需要两个软件:

      • libimobiledevice - 使用 brew install libimobiledevice --HEAD 安装
      • ios-deploy - 使用 npm install -g ios-deploy 安装
    2. 在真机上设置WebDriverAgentRunner为document

    3. 在源代码中添加所需的功能配置,如下所示:

    platformName: "iOS",
    platformVersion: "10.3",
    deviceName: "HCiPhone",
    browserName: "safari",
    udid: "5343fa7f9c04cb60f02cb40f1233073d23dbbbc7",
    startIWDP: true,
    safariInitialUrl: "https://stackoverflow.com/"
    

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 2012-09-16
      • 2011-03-02
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多