🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2604閲覧

[swift]UI recording機能でレコードしたソースをテストすると落ちる

syosinsya_swift

総合スコア62

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/12/03 09:52

編集2019/12/04 02:34

発生している問題・エラーメッセージ

XCTestを実装したく、
初心者なのでまずはUI recording機能でレコードし、書き方を学ぼうと思っています。

ところが、レコードしたソースをテストしても毎回エラーになってしまい原因がわからず先へ進めない状態です。

Failed to get matching snapshot: No matches found for Descendants matching type ScrollView from input {( Application, pid: 9016, label: 'Test' )} Possibly caused by runtime issues: Automation type mismatch: computed WebView from legacy attributes vs ScrollView from modern attribute. Input attributes and values: { "XC_kAXXCAttributeAutomationType" = 46; "XC_kAXXCAttributeElementBaseType" = UIScrollView; "XC_kAXXCAttributeElementType" = WKScrollView; "XC_kAXXCAttributeTraits" = 8589934592; } Automation type mismatch: computed TextView from legacy attributes vs Other from modern attribute. Input attributes and values: { "XC_kAXXCAttributeAutomationType" = 0; "XC_kAXXCAttributeElementBaseType" = UIView; "XC_kAXXCAttributeElementType" = WKContentView; "XC_kAXXCAttributeTraits" = 140883517505536; } See test report attachments for more detail.

該当のソースコード

func testExample() { let app = XCUIApplication() app.launch() // let app = XCUIApplication() app.scrollViews.otherElements.tables.staticTexts["コード"].tap() app.pickerWheels["未選択"].press(forDuration: 2.0); app.toolbars["Toolbar"].buttons["完了"].tap() app.buttons["ketteiButton"].tap() }

デバック時の値

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーについて全部はわかりませんが、appにScrollViewがないと言っているように思います。画面の状態によっていろいろと変わるので、一つずつ調べていく必要があります。

  • app.scrollViews.otherElements.tables.staticTexts["コード"].tap()の行にブレークポイントを貼って実行する。
  • 止まったところで、app.scrollViewsには何が出てくるか、app.scrollViews.otherElementsには何が出るか、といった具合に具体的に中身を調べます。
  • 目的の物を選んで実行できるようにコードを調整します。

UI Testは画面パーツの一覧から目的のものを選んでTapなどを実行するという感じの動きで、目的のパーツをどうやって選び出すかがポイントです。
パーツにaccessibilityIdentifierなどを設定すると、それを手がかりに選べたりするので、そのような調整をしていくとよいと思います。

今いただいている情報では、こちらで再現実験ができないので、このくらいしか言えません。

投稿2019/12/03 13:39

eytyet

総合スコア803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsya_swift

2019/12/04 02:36 編集

アドバイスありがとうございます。 デバックポイントを置いたのですがStepIntoをすると、その時点で落ちてしまうので 中身を調べることが難しい状態です。 app.scrollViews.otherElements.tables.staticTexts["コード"].tap() の行に止まった時点の情報は質問欄に追加にて添付しました通りで、中身を調べるのが厳しいです。。
eytyet

2019/12/04 07:08 編集

スクリーンキャプチャをありがとうございます。step intoして落ちるのはその行の実行の中に原因があるからです。そのため、その直前でとめて、原因を探します。 Variables View(追加)の上で右クリックして、"Add Expression"をして、"app.scrollViews.count"と入れてみたらどうなりますか?(多分これが0なので、エラーになっている) app.scrollViewsと入れても、オブジェクトの中身が都合よく一覧で出たりはしないのでわかりにくいですが、countを指定してやれば見えます。このように都度Add Expressionして必要なプロパティを調べ、中身がどうなっているかを確かめていきます。(もっといいやり方を誰か教えてくれたら私も嬉しいです) Variables Viewではオブジェクトのメソッド呼び出しさえできてしまうので、queryの一覧取得なんかも可能なので、用意されているものをかたっぱしから打ってみて調べると、なんとなく見えてくるんじゃないかと思います。
syosinsya_swift

2019/12/04 09:14

ありがとうございます!!! はずかしながら、Add Expressionの機能を知りませんでした。。 こちらでデバックしながら確認したところ、無事通りました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問