Как получить React Native TextInput по его testID в ios UITest - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь редактировать текст компонента TextInput React Native в ios UITest. Я добавил testID реквизит к компоненту.

Два вопроса:

  1. Где пропа testID присутствует в собственном ios коде?
  2. Как я могу выбрать TextInput по этому testID и добавить к нему текст?

Приложение. js

import React from "react";
import { StyleSheet, TextInput, View } from "react-native";

export default function App() {
  return (
    <View>
      <TextInput testID="username" placeholder="Enter your username" />
    </View>
  );
}

TestappUITests.swift

import XCTest

class TestappUITests: XCTestCase {

    ...

    func testExample() {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()

        // Write test code here
    }
}

1 Ответ

0 голосов
/ 01 мая 2020
  1. RN использует реквизит testID в качестве accessibiltiyIdentifier для элемента ios.

Вы можете просмотреть его в xcode, открыв 'Debug View' Иерархия 'особенность в xcode и выбор элемента.

Using the Debug View Hierarchy to find the accessibility identifier

Вы должны использовать XCUIElementQuery , чтобы выбрать компонент TextInput внутри ios UITest. TextInput является RCTUITextField, поэтому вам нужно использовать свойство textFields Instance.

Затем вы можете использовать RN testId, чтобы выбрать элемент. С этого момента манипулирование становится простым с помощью методов tap и typeText .

import XCTest

class TestappUITests: XCTestCase {

    ...

    func testExample() {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()

        // Give element focus
        app.textFields["username"].tap()
        // Type text in the element
        app.textFields["username"].typeText("super-user");

    }
}

Если вы пытаетесь получить компонент другого типа по testID, вы можете проверить 'Debug View Hierarchy', чтобы узнать, какой тип элемента у вас есть. А затем выясните, какой запрос следует использовать вместо textFields.

К вашему сведению, свойство .otherElements Instance используется для выбора «Реагировать на собственные представления».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...