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

feature request: When copying an accessibility ID that contains a newline, please use "\n" instead of the actual newline character. This will make it easier to paste the ID directly into code. #1440

Open
miwtoo opened this issue Apr 29, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@miwtoo
Copy link
Contributor

miwtoo commented Apr 29, 2024

Current Behavior

Setting
Tab 3 of 3

Suggested Solution

Setting\nTab 3 of 3

Additional Information

When copying an accessibility ID that contains a newline, please use "\n" instead of the actual newline character. This will make it easier to paste the ID directly into code.

image

accessibility id :
image

@miwtoo miwtoo added the enhancement New feature or request label Apr 29, 2024
@eglitise
Copy link
Collaborator

Could you please provide a snippet of how this particular element appears in your application XML source? (you can get the full source with the Copy XML or Download XML buttons)

@miwtoo
Copy link
Contributor Author

miwtoo commented Apr 29, 2024

@eglitise

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<hierarchy index="0" class="hierarchy" rotation="0" width="1008" height="2077">
  <android.widget.FrameLayout index="0" package="com.example.automation_appium" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2244]" displayed="true">
    <android.widget.LinearLayout index="0" package="com.example.automation_appium" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2190]" displayed="true">
      <android.widget.FrameLayout index="0" package="com.example.automation_appium" class="android.widget.FrameLayout" text="" resource-id="android:id/content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2190]" displayed="true">
        <android.widget.FrameLayout index="0" package="com.example.automation_appium" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2190]" displayed="true">
          <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2190]" displayed="true">
            <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2190]" displayed="true">
              <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2190]" displayed="true">
                <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2190]" displayed="true">
                  <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2042]" displayed="true">
                    <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2042]" displayed="true">
                      <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,2042]" displayed="true">
                        <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1008,1860]" displayed="true">
                          <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" content-desc="Which brand of water&#10;would you like to buy?" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[227,113][781,266]" displayed="true" />
                          <android.widget.EditText index="1" package="com.example.automation_appium" class="android.widget.EditText" text="" resource-id="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,294][1008,802]" displayed="true" hint="Search by water name...&#10;Top Waters :">
                            <android.widget.HorizontalScrollView index="0" package="com.example.automation_appium" class="android.widget.HorizontalScrollView" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="true" selected="false" bounds="[67,563][941,671]" displayed="true">
                              <android.widget.Button index="0" package="com.example.automation_appium" class="android.widget.Button" text="" content-desc="Nestlé Pure Life" resource-id="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[89,563][426,671]" displayed="true" />
                              <android.widget.Button index="1" package="com.example.automation_appium" class="android.widget.Button" text="" content-desc="Aquafina" resource-id="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="true" bounds="[449,563][736,671]" displayed="true" />
                              <android.widget.Button index="2" package="com.example.automation_appium" class="android.widget.Button" text="" content-desc="Evian" resource-id="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[758,563][941,671]" displayed="true" />
                            </android.widget.HorizontalScrollView>
                          </android.widget.EditText>
                          <android.view.View index="2" package="com.example.automation_appium" class="android.view.View" text="" content-desc="Thai Water" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[45,802][229,854]" displayed="true" />
                          <android.widget.HorizontalScrollView index="3" package="com.example.automation_appium" class="android.widget.HorizontalScrollView" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="true" selected="false" bounds="[11,865][997,1320]" displayed="true">
                            <android.widget.ImageView index="0" package="com.example.automation_appium" class="android.widget.ImageView" text="" content-desc="Crystal&#10;฿5.33" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[11,865][522,1320]" displayed="true" />
                            <android.widget.ImageView index="1" package="com.example.automation_appium" class="android.widget.ImageView" text="" content-desc="Singha&#10;฿10.00" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[522,865][997,1320]" displayed="true" />
                          </android.widget.HorizontalScrollView>
                          <android.view.View index="4" package="com.example.automation_appium" class="android.view.View" text="" content-desc="Others Water" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[45,1331][271,1383]" displayed="true" />
                          <android.widget.HorizontalScrollView index="5" package="com.example.automation_appium" class="android.widget.HorizontalScrollView" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="true" selected="false" bounds="[11,1394][997,1849]" displayed="true">
                            <android.widget.ImageView index="0" package="com.example.automation_appium" class="android.widget.ImageView" text="" content-desc="Aquafina&#10;฿14.00" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[11,1394][522,1849]" displayed="true" />
                            <android.widget.ImageView index="1" package="com.example.automation_appium" class="android.widget.ImageView" text="" content-desc="Acqua Panna&#10;฿79.00" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[522,1394][997,1849]" displayed="true" />
                          </android.widget.HorizontalScrollView>
                        </android.view.View>
                      </android.view.View>
                    </android.view.View>
                  </android.view.View>
                  <android.view.View index="1" package="com.example.automation_appium" class="android.view.View" text="" resource-id="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,2042][1008,2190]" displayed="true">
                    <android.view.View index="0" package="com.example.automation_appium" class="android.view.View" text="" content-desc="Dashboard&#10;Tab 1 of 3" resource-id="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="true" bounds="[0,2042][336,2190]" displayed="true" />
                    <android.view.View index="1" package="com.example.automation_appium" class="android.view.View" text="" content-desc="Profile&#10;Tab 2 of 3" resource-id="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[336,2042][672,2190]" displayed="true" />
                    <android.view.View index="2" package="com.example.automation_appium" class="android.view.View" text="" content-desc="Setting&#10;Tab 3 of 3" resource-id="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[672,2042][1008,2190]" displayed="true" />
                  </android.view.View>
                </android.view.View>
              </android.view.View>
            </android.view.View>
          </android.view.View>
        </android.widget.FrameLayout>
      </android.widget.FrameLayout>
    </android.widget.LinearLayout>
    <android.view.View index="2" package="com.example.automation_appium" class="android.view.View" text="" resource-id="android:id/navigationBarBackground" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,2190][1008,2244]" displayed="true" />
  </android.widget.FrameLayout>
</hierarchy>

@eglitise
Copy link
Collaborator

Thanks, this confirms that there is an actual newline character in the attribute value. It should be possible to add handling for this.

@miwtoo
Copy link
Contributor Author

miwtoo commented Apr 29, 2024

@eglitise I created a pull request for feature request at #1442 I would appreciate it if you could please review it and provide any suggestions.

eglitise pushed a commit that referenced this issue Apr 30, 2024
* feat: ✨ support element that has newline replace to \n (#1440)

* style: 🚨 fix style (#1440)

* refactor: ♻️ move Regex part to more reuseable

* fix: 🐛 Inspector GUI is not newline not show correctly

* fix: 🔥 getback comment

* fix: 🚨 fix lint

* fix: 💬 no extra spacing

* fix: 🗑️ remove unuse regex character

* refactor: ♻️ clean unuse attributes in test

* refactor: ♻️ remove more unuse in test hierarchy attributes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants