Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[do not merge] add value in find_element by identifier #416

Closed
wants to merge 1 commit into from

Conversation

KazuCocoa
Copy link
Member

@KazuCocoa KazuCocoa commented Oct 28, 2020

This regression happened on both Xcode 11 and 12. (Haven't tested on 10, but I think Xcode 10 also had the same issue)

find_element :name, 'hello' in below got a regression. The value typed in a field only appeared in value in the page source. But current logic tied to find an element only by name.

    def test_type
      w3c_scroll @@driver

      @@core.wait { @@driver.find_element :accessibility_id, 'Text Fields' }.click

      text = @@core.wait { @@driver.find_element :class, 'XCUIElementTypeTextField' }
      text.type 'hello'

      e = @@core.wait { @@driver.find_element :name, 'hello' }
      assert_equal 'hello', e.value

      @@driver.back
    end

https://github.com/appium/ruby_lib_core/blob/master/test/functional/ios/patch_test.rb

Current:

[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 09:53:07.488 F  testmanagerd[32397:662d19] [com.apple.dt.xctest:Default] Automation type mismatch; legacy system derived element type 9 from class UIAccessibilityElementKBKey:UIAccessibilityElement, traits 8589934641, but AXAutomationType returned 20 which maps to 20
[Xcode]     t =    35.48s     Find: Descendants matching type Any
[Xcode]
[Xcode]     t =    35.48s     Find: Elements matching predicate 'wdName == "hello" AND (1 == 1 OR identifier == 0 OR frame == 0 OR value == 0 OR title == 0 OR label == 0 OR elementType == 0 OR enabled == 0 OR placeholderValue == 0 OR selected == 0)'
[Xcode]
[WD Proxy] Got response with status 404: {"value":{"error":"no such element","message":"unable to find an element using 'name', value 'hello'","traceback":"(\n\t0   WebDriverAgentLib                   0x0000000109ac6fea FBNoSuchElementErrorResponseForRequest + 298\n\t1   WebDriverAgentLib                   0x0000000109ac6da9 +[FBFindElementCommands handleFindElement:] + 409\n\t2   WebDriverAgentLib                   0x0000000109a9e7f6 -[FBRoute_TargetAction mountRequest:intoResponse:] + 182\n\t3   WebDriverAgentLib                   0x0000000109a86728 __37-[FBWebServer registerRouteHandlers:]_block_invoke + 536\n\t4   WebDriverAgentLib                   0x0000000109aac31b -[RoutingHTTPServer handleRoute:withRequest:response:] + 219\n\t5   WebDriverAgentLib                   0x0000000109aad213 __72-[RoutingHTTPServer routeMethod:withPath:parameters:request:connection:]_block_invoke + 83\n\t6   libdispatch.dylib                   0x00007fff5208e8cb _dispatch_client_callout + 8\n\t7   libdispatch.dylib                   0x00007fff5209b940 _dispatch_...
[debug] [W3C] Matched W3C error code 'no such element' to NoSuchElementError

Will be:

r privileged AX value slot attributes
[Xcode]     t =    34.96s     Find: Descendants matching type Any
[Xcode]     t =    34.97s     Find: Elements matching predicate '(wdName == "hello" OR wdValue == "hello") AND (1 == 1 OR identifier == 0 OR frame == 0 OR value == 0 OR title == 0 OR label == 0 OR elementType == 0 OR enabled == 0 OR placeholderValue == 0 OR selected == 0)'
[Xcode]     t =    34.97s     Find: Identity Binding
[Xcode]

1.18.3 was like below to find the hello element.

 privileged AX value slot attributes
[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 10:22:31.504 Df testmanagerd[33949:670ef4] [com.apple.dt.xctest:Default] Checking 'numbers' for privileged AX value slot attributes
[Xcode]     t =    28.48s     Find: Descendants matching type Any
[Xcode]     t =    28.49s     Find: Elements matching predicate '"hello" IN identifiers'
[Xcode]     t =    28.49s     Find: Identity Binding
[Xcode]     t =    28.50s Requesting snapshot of accessibility hierarchy for app with pid 37267
[Xcode]
[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 10:22:31.504 Df testmanagerd[33949:670ef4] [com.apple.dt.xctest:Default] Checking 'space' for privileged AX value slot attributes

The page source is https://gist.github.com/KazuCocoa/4d874d41a8dc9c2d54d1053000768361

image

@KazuCocoa
Copy link
Member Author

What do you think @mykola-mokhnach ?

@KazuCocoa
Copy link
Member Author

Hm, is '"hello" IN identifiers' faster?

@mykola-mokhnach
Copy link

try name == %@ OR %@ IN identifiers

@KazuCocoa
Copy link
Member Author

Hm, it seems the syntax of identifier or identifiers did not work.
Below log is name == %@ OR %@ IN identifiers.

[HTTP] --> POST /wd/hub/session/0f03e4e8-207a-4405-b825-9ced2e613d57/elements
[HTTP] {"using":"name","value":"hello"}
[debug] [W3C (0f03e4e8)] Calling AppiumDriver.findElements() with args: ["name","hello","0f03e4e8-207a-4405-b825-9ced2e613d57"]
[debug] [XCUITest] Executing command 'findElements'
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, name, class name, -ios predicate string, -ios class chain, accessibility id
[debug] [BaseDriver] Waiting up to 0 ms for condition
[debug] [WD Proxy] Matched '/elements' to command name 'findElements'
[debug] [WD Proxy] Proxying [POST /elements] to [POST http://127.0.0.1:8100/session/63AC869C-3E9F-4C49-BDB8-F5543DCC6B48/elements] with body: {"using":"name","value":"hello"}
[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 12:21:33.819 Df testmanagerd[39900:67d238] [com.apple.dt.xctest:Default] Fetching AX attributes XC_kAXXCAttributeSystemAppApplication for Device system-wide element
[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 12:21:33.821 Df testmanagerd[39900:67d238] [com.apple.dt.xctest:Default] Got attributes, transferring to dictionary for return.
[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 12:21:33.823 Df testmanagerd[39900:67d238] [com.apple.dt.xctest:Default] Fetching AX attributes XC_kAXXCAttributeFocusedApplications for AX element pid: 39234, elementOrHash.elementID: 0.1
[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 12:21:33.824 Df testmanagerd[39900:67d238] [com.apple.dt.xctest:Default] Got attributes, transferring to dictionary for return.
[Xcode] 2020-10-28 12:21:33.825278-0700 WebDriverAgentRunner-Runner[39908:6792839] Getting the most recent active application (out of 1 total items)
[Xcode]
[IOSSimulatorLog] [IOS_SYSLOG_ROW] 2020-10-28 12:21:33.825 Df WebDriverAgentRunner-Runner[39908:67a687] (WebDriverAgentLib) Getting the most recent active application (out of 1 total items)
[WD Proxy] Got response with status 500: {"value":{"error":"unknown error","message":"The attribute 'identifiers' is unknown. Valid attribute names are: (\n    UID,\n    accessibilityContainer,\n    accessible,\n    enabled,\n    frame,\n    label,\n    name,\n    rect,\n    selected,\n    type,\n    value,\n    visible,\n    wdAccessibilityContainer,\n    wdAccessible,\n    wdEnabled,\n    wdFrame,\n    wdLabel,\n    wdName,\n    wdRect,\n    wdSelected,\n    wdType,\n    wdUID,\n    wdValue,\n    wdVisible\n)","traceback":"(\n\t0   CoreFoundation                      0x00007fff20439aaa __exceptionPreprocess + 242\n\t1   libobjc.A.dylib                     0x00007fff20177f78 objc_exception_throw + 48\n\t2   WebDriverAgentLib                   0x00000001080346b4 +[FBElementUtils wdAttributeNameForAttributeName:] + 596\n\t3   WebDriverAgentLib                   0x00000001080307f8 +[NSExpression(FBFormat) fb_wdExpressionWithExpression:] + 568\n\t4   WebDriverAgentLib                   0x000000010804cf75 __50+[NSPredicate(FBFormat) fb_formatSearchPr...
[debug] [W3C] Matched W3C error code 'unknown error' to UnknownError
[debug] [W3C (0f03e4e8)] Responding to client with driver.findElements() result: []
[HTTP] <-- POST /wd/hub/session/0f03e4e8-207a-4405-b825-9ced2e613d57/elements 200 17 ms - 12
[HTTP]

like below commands also had no good results. (no element)

driver.find_element :predicate, '"hello" == identifier'
driver.find_element :predicate, '"hello" IN identifiers'

@mykola-mokhnach
Copy link

mykola-mokhnach commented Oct 28, 2020

Yes, the error makes sense. We could try to add identifiers check into

Also, identifiers should then be added to the hack predicate string as well

@KazuCocoa KazuCocoa changed the title fix: add value in find_element by identifier [do not merge] add value in find_element by identifier Oct 28, 2020
@KazuCocoa
Copy link
Member Author

KazuCocoa commented Oct 28, 2020

note that this value is in
<XCUIElementTypeTextField type=\"XCUIElementTypeTextField\" value=\"hello\" label=\"\" enabled=\"true\" visible=\"true\" x=\"97\" y=\"152\" width=\"220\" height=\"35\"\/>. It has no name. So, as name and accessibility id locator, current behaviour is expected. 🆗

Instead of them, we must find it via predicate locator.

So, Ruby test should be like find_element :predicate, 'wdValue == "hello"'

Will update Ruby code. And write a brief guide about this breaking change for users.
(Anyway, this change will be in 1.19.1 at least)


Will keep this PR as [do not merge] for now to leave note for me. (Moved to a draft)
Will close this after updating Ruby test code.

@KazuCocoa KazuCocoa marked this pull request as draft October 28, 2020 21:18
@KazuCocoa KazuCocoa removed the request for review from mykola-mokhnach October 28, 2020 21:18
@KazuCocoa
Copy link
Member Author

As a side note:

As XCTest, it is value: hello. Since 1.19.1, we can guide users to write wdValue == "hello" or value == "hello" with predicate to find the value attribute. label in below and XML tree is generally :name and :accessibility_id then ✅

Window (Main), {{0.0, 0.0}, {414.0, 896.0}}
Element subtree:
 →Window (Main), 0x6000036e7020, {{0.0, 0.0}, {414.0, 896.0}}
    Other, 0x6000036e6f40, {{0.0, 0.0}, {414.0, 896.0}}
      Other, 0x6000036e6e60, {{0.0, 0.0}, {414.0, 896.0}}
        Other, 0x6000036f16c0, {{0.0, 0.0}, {414.0, 896.0}}
          Other, 0x6000036f1180, {{0.0, 0.0}, {414.0, 896.0}}
            Other, 0x6000036f0000, {{0.0, 0.0}, {414.0, 896.0}}
              NavigationBar, 0x6000036f01c0, {{0.0, 48.0}, {414.0, 44.0}}, identifier: 'Text Fields'
                Button, 0x6000036f0700, {{0.0, 48.0}, {126.5, 44.0}}, label: 'UIKitCatalog'
                StaticText, 0x6000036f02a0, {{164.5, 60.0}, {85.0, 20.5}}, label: 'Text Fields'
              Other, 0x6000036f0380, {{0.0, 0.0}, {414.0, 896.0}}
                Other, 0x6000036f2ae0, {{0.0, 0.0}, {414.0, 896.0}}
                  Table, 0x6000036debc0, {{0.0, 0.0}, {414.0, 896.0}}
                    Other, 0x6000036e6d80, {{0.0, 92.0}, {414.0, 55.5}}, identifier: 'DEFAULT'
                      Other, 0x6000036e6ca0, {{0.0, 92.0}, {414.0, 55.5}}, label: 'DEFAULT'
                    Cell, 0x6000036e6680, {{0.0, 147.5}, {414.0, 44.0}}
                      Other, 0x6000036e6ae0, {{0.0, 147.5}, {414.0, 0.5}}
                      Other, 0x6000036e6a00, {{0.0, 191.0}, {414.0, 0.5}}
                      Other, 0x6000036deca0, {{15.0, 190.5}, {360.0, 1.0}}
                      TextField, 0x6000036deae0, {{97.0, 152.5}, {220.0, 34.0}}, placeholderValue: 'Placeholder text', value: hello, Keyboard Focused
                    Other, 0x6000036e6920, {{0.0, 201.5}, {414.0, 38.0}}, identifier: 'TINTED'
                      Other, 0x6000036e6840, {{0.0, 201.5}, {414.0, 38.0}}, label: 'TINTED'
                    Cell, 0x6000036e6760, {{0.0, 239.5}, {414.0, 44.0}}
                      Other, 0x6000036e6140, {{0.0, 239.5}, {414.0, 0.5}}
                      Other, 0x6000036e65a0, {{0.0, 283.0}, {414.0, 0.5}}
                      Other, 0x6000036f7560, {{15.0, 282.5}, {360.0, 1.0}}
                      TextField, 0x6000036f79c0, {{97.0, 244.5}, {220.0, 34.0}}, placeholderValue: 'Placeholder text'
                    Other, 0x6000036f7aa0, {{0.0, 293.5}, {414.0, 38.0}}, identifier: 'SECURE'
                      Other, 0x6000036f7e20, {{0.0, 293.5}, {414.0, 38.0}}, label: 'SECURE'
                    Cell, 0x6000036f7d40, {{0.0, 331.5}, {414.0, 44.0}}
                      Other, 0x6000036f7c60, {{0.0, 331.5}, {414.0, 0.5}}
                      Other, 0x6000036f7b80, {{0.0, 375.0}, {414.0, 0.5}}
                      Other, 0x6000036e64c0, {{15.0, 374.5}, {360.0, 1.0}}
                      SecureTextField, 0x6000036e63e0, {{97.0, 336.5}, {220.0, 34.0}}, placeholderValue: 'Placeholder text'
                    Other, 0x6000036e6300, {{0.0, 385.5}, {414.0, 38.0}}, identifier: 'SPECIFIC KEYBOARD'
                      Other, 0x6000036ded80, {{0.0, 385.5}, {414.0, 38.0}}, label: 'SPECIFIC KEYBOARD'
                    Cell, 0x6000036dee60, {{0.0, 423.5}, {414.0, 44.0}}
                      Other, 0x6000036de140, {{0.0, 423.5}, {414.0, 0.5}}
                      Other, 0x6000036de060, {{0.0, 467.0}, {414.0, 0.5}}
                      Other, 0x6000036ddf80, {{15.0, 466.5}, {360.0, 1.0}}
                      TextField, 0x6000036ddea0, {{97.0, 428.5}, {220.0, 34.0}}, placeholderValue: 'Placeholder text'
                    Other, 0x6000036dddc0, {{0.0, 477.5}, {414.0, 38.0}}, identifier: 'CUSTOM'
                      Other, 0x6000036ddce0, {{0.0, 477.5}, {414.0, 38.0}}, label: 'CUSTOM'
                    Cell, 0x6000036dd6c0, {{0.0, 515.5}, {414.0, 44.0}}
                      Other, 0x6000036ddb20, {{0.0, 515.5}, {414.0, 0.5}}
                      Other, 0x6000036dda40, {{0.0, 559.0}, {414.0, 0.5}}
                      Other, 0x6000036dd960, {{15.0, 558.5}, {360.0, 1.0}}
                      TextField, 0x6000036dd880, {{97.0, 522.5}, {220.0, 30.0}}, placeholderValue: 'Placeholder text'
                        Button, 0x6000036dd7a0, {{287.0, 526.5}, {22.0, 22.0}}, label: 'text field purple right view'
                    Other, 0x6000036e3f00, {{0.0, 569.5}, {414.0, 38.0}}, identifier: 'SEARCH'
                      Other, 0x6000036e39c0, {{0.0, 569.5}, {414.0, 38.0}}, label: 'SEARCH'
                    Cell, 0x6000036e3e20, {{0.0, 607.5}, {414.0, 44.0}}
                      Other, 0x6000036e3d40, {{0.0, 607.5}, {414.0, 0.5}}
                      Other, 0x6000036e3c60, {{0.0, 651.0}, {414.0, 0.5}}
                      TextField, 0x6000036e3b80, {{16.0, 611.5}, {382.0, 36.0}}, placeholderValue: 'Enter search text', value: 
                        Button, 0x6000036e3aa0, {{373.5, 620.0}, {19.0, 19.0}}, label: 'Clear text'
                      Other, 0x6000036e6220, {{15.0, 650.5}, {360.0, 1.0}}
Path to element:
 →Application, 0x6000036e6bc0, pid: 40442, label: 'UIKitCatalog'
  ↳Window (Main), 0x6000036e7020, {{0.0, 0.0}, {414.0, 896.0}}
Query chain:
 →Find: Application 'com.example.apple-samplecode.UICatalog'
  Output: {
      Application, pid: 40442, label: 'UIKitCatalog'
  }
  ↪︎Find: Children matching type Any
    Output: {
        Window (Main), {{0.0, 0.0}, {414.0, 896.0}}
      Window, {{0.0, 0.0}, {414.0, 896.0}}
      Window, {{0.0, 0.0}, {414.0, 896.0}}
    }
    ↪︎Find: Identity Binding
      Output: {
          Window (Main), {{0.0, 0.0}, {414.0, 896.0}}
      }


Attributes: Window, {{0.0, 0.0}, {414.0, 896.0}}
Element subtree:
 →Window, 0x6000036e5f80, {{0.0, 0.0}, {414.0, 896.0}}
    Other, 0x6000036d64c0, {{0.0, 0.0}, {414.0, 896.0}}
      Other, 0x6000036d65a0, {{0.0, 0.0}, {414.0, 896.0}}
      Other, 0x6000036d6680, {{0.0, 595.0}, {414.0, 301.0}}
        Other, 0x6000036d7d40, {{0.0, 595.0}, {414.0, 243.0}}
Path to element:
 →Application, 0x6000036dd500, pid: 40442, label: 'UIKitCatalog'
  ↳Window, 0x6000036e5f80, {{0.0, 0.0}, {414.0, 896.0}}
Query chain:
 →Find: Application 'com.example.apple-samplecode.UICatalog'
  Output: {
      Application, pid: 40442, label: 'UIKitCatalog'
  }
  ↪︎Find: Children matching type Any
    Output: {
        Window (Main), {{0.0, 0.0}, {414.0, 896.0}}
      Window, {{0.0, 0.0}, {414.0, 896.0}}
      Window, {{0.0, 0.0}, {414.0, 896.0}}
    }
    ↪︎Find: Identity Binding
      Output: {
          Window, {{0.0, 0.0}, {414.0, 896.0}}
      }


Attributes: Window, {{0.0, 0.0}, {414.0, 896.0}}
Element subtree:
 →Window, 0x600003693560, {{0.0, 0.0}, {414.0, 896.0}}
    Other, 0x600003697b80, {{0.0, 0.0}, {414.0, 896.0}}
      Other, 0x600003697c60, {{0.0, 595.0}, {414.0, 301.0}}
        Other, 0x600003697d40, {{0.0, 595.0}, {414.0, 243.0}}
          Other, 0x600003697e20, {{0.0, 595.0}, {414.0, 301.0}}
            Other, 0x600003697f00, {{0.0, 595.0}, {414.0, 301.0}}
              Other, 0x6000036f6300, {{0.0, 595.0}, {414.0, 301.0}}
              Other, 0x6000036f63e0, {{0.0, 595.0}, {414.0, 301.0}}
        Other, 0x6000036f64c0, {{0.0, 595.0}, {414.0, 243.0}}
          Keyboard, 0x6000036f4540, {{0.0, 595.0}, {414.0, 243.0}}
            Other, 0x6000036f5dc0, {{0.0, 595.0}, {414.0, 243.0}}
              Other, 0x6000036f5ce0, {{0.0, 595.0}, {414.0, 243.0}}
                Key, 0x6000036f57a0, {{2.0, 602.0}, {41.0, 49.0}}, label: 'q'
                Key, 0x60000369a5a0, {{43.0, 602.0}, {41.0, 49.0}}, label: 'w'
                Key, 0x60000369a680, {{84.0, 602.0}, {41.0, 49.0}}, label: 'e'
                Key, 0x60000369a760, {{125.0, 602.0}, {41.0, 49.0}}, label: 'r'
                Key, 0x60000369a840, {{166.0, 602.0}, {41.0, 49.0}}, label: 't'
                Key, 0x6000036f7f00, {{207.0, 602.0}, {41.0, 49.0}}, label: 'y'
                Key, 0x6000036f7640, {{248.0, 602.0}, {41.0, 49.0}}, label: 'u'
                Key, 0x6000036f4e00, {{289.0, 602.0}, {41.0, 49.0}}, label: 'i'
                Key, 0x6000036f5180, {{330.0, 602.0}, {41.0, 49.0}}, label: 'o'
                Key, 0x6000036f5420, {{371.0, 602.0}, {41.0, 49.0}}, label: 'p'
                Key, 0x6000036f4fc0, {{23.0, 658.0}, {41.0, 49.0}}, label: 'a'
                Key, 0x6000036f6760, {{64.0, 658.0}, {41.0, 49.0}}, label: 's'
                Key, 0x6000036f6680, {{105.0, 658.0}, {41.0, 49.0}}, label: 'd'
                Key, 0x6000036f5500, {{146.0, 658.0}, {41.0, 49.0}}, label: 'f'
                Key, 0x6000036f6e60, {{187.0, 658.0}, {41.0, 49.0}}, label: 'g'
                Key, 0x6000036f6d80, {{228.0, 658.0}, {41.0, 49.0}}, label: 'h'
                Key, 0x6000036f6bc0, {{269.0, 658.0}, {41.0, 49.0}}, label: 'j'
                Key, 0x6000036f5c00, {{310.0, 658.0}, {41.0, 49.0}}, label: 'k'
                Key, 0x6000036f6ca0, {{351.0, 658.0}, {41.0, 49.0}}, label: 'l'
                Button, 0x6000036f6a00, {{2.0, 714.0}, {50.0, 49.0}}, identifier: 'shift', label: 'shift'
                Key, 0x6000036f6ae0, {{64.0, 714.0}, {41.0, 49.0}}, label: 'z'
                Key, 0x6000036f50a0, {{105.0, 714.0}, {41.0, 49.0}}, label: 'x'
                Key, 0x6000036f6840, {{146.0, 714.0}, {41.0, 49.0}}, label: 'c'
                Key, 0x6000036f6920, {{187.0, 714.0}, {41.0, 49.0}}, label: 'v'
                Key, 0x6000036f65a0, {{228.0, 714.0}, {41.0, 49.0}}, label: 'b'
                Key, 0x6000036f47e0, {{269.0, 714.0}, {41.0, 49.0}}, label: 'n'
                Key, 0x6000036f72c0, {{310.0, 714.0}, {41.0, 49.0}}, label: 'm'
                Key, 0x600003693640, {{362.0, 714.0}, {50.0, 49.0}}, identifier: 'delete', label: 'delete'
                Key, 0x60000369a920, {{2.0, 770.0}, {103.0, 49.0}}, identifier: 'more', label: 'numbers'
                Key, 0x60000369aa00, {{105.0, 770.0}, {205.0, 49.0}}, label: 'space'
                Button, 0x60000369aae0, {{310.0, 770.0}, {102.0, 49.0}}, identifier: 'Done', label: 'done'
        Other, 0x6000036fc7e0, {{0.0, 595.0}, {414.0, 301.0}}
          Button, 0x600003693720, {{8.0, 829.5}, {66.0, 66.0}}, label: 'Emoji'
            StaticText, 0x6000036fc1c0, {{8.0, 829.5}, {0.0, 0.0}}
          Button, 0x6000036fc2a0, {{340.0, 829.0}, {66.0, 66.0}}, identifier: 'dictation', label: 'Dictate'
            StaticText, 0x6000036fc380, {{340.0, 829.0}, {0.0, 0.0}}
Path to element:
 →Application, 0x600003699340, pid: 40442, label: 'UIKitCatalog'
  ↳Window, 0x600003693560, {{0.0, 0.0}, {414.0, 896.0}}
Query chain:
 →Find: Application 'com.example.apple-samplecode.UICatalog'
  Output: {
      Application, pid: 40442, label: 'UIKitCatalog'
  }
  ↪︎Find: Children matching type Any
    Output: {
        Window (Main), {{0.0, 0.0}, {414.0, 896.0}}
      Window, {{0.0, 0.0}, {414.0, 896.0}}
      Window, {{0.0, 0.0}, {414.0, 896.0}}
    }
    ↪︎Find: Identity Binding
      Output: {
          Window, {{0.0, 0.0}, {414.0, 896.0}}
      }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants