react-native-e2etest icon indicating copy to clipboard operation
react-native-e2etest copied to clipboard

Appium in multi screen

Open gandarain opened this issue 4 years ago • 2 comments

Hi, Thanks for your information about appium. I want to ask you something. Lets say I have 2 screens, Login Screen and Home Screen. Login Screen will loaded first then Home Screen In Login screen I have accessibilityLabel fieldEmail and buttonLogin. In Home Screen I have accessibilityLabel buttonHome. How to tell appium, we need access buttonHome when Home Screen loaded?

This is my code

/* eslint-disable no-undef */
import wd from 'wd'
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000
const PORT = 4723
const config = {
  platformName: 'Android',
  deviceName: 'Pixel 3a XL API 29',
  app: '/Users/gandahalojasa/Documents/Project/Learn/Appium_React_Native/android/app/build/outputs/apk/debug/app-debug.apk'
}
const driver = wd.promiseChainRemote('localhost', PORT)

beforeAll(async () => {
  await driver.init(config)
  await driver.sleep(4000)
}) // Sometime for the app to load

test('login screen test', async () => {
  expect(await driver.hasElementByAccessibilityId('fieldEmail')).toBe(true)
  await driver.elementByAccessibilityId('fieldEmail').type('[email protected]')
  expect(await driver.hasElementByAccessibilityId('buttonLogin')).toBe(true)
  const element = await driver.elementByAccessibilityId('buttonLogin')
  await element.click()
  expect(await driver.hasElementByAccessibilityId('notHere')).toBe(false)
})

test('home screen test', async () => {
  expect(await driver.hasElementByAccessibilityId('buttonHome')).toBe(true)
  const element = await driver.elementByAccessibilityId('buttonHome')
  await element.click()
})

gandarain avatar Jun 26 '20 04:06 gandarain

Hi, Thanks for your information about appium. I want to ask you something. Lets say I have 2 screens, Login Screen and Home Screen. Login Screen will loaded first then Home Screen In Login screen I have accessibilityLabel fieldEmail and buttonLogin. In Home Screen I have accessibilityLabel buttonHome. How to tell appium, we need access buttonHome when Home Screen loaded?

This is my code

/* eslint-disable no-undef */
import wd from 'wd'
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000
const PORT = 4723
const config = {
  platformName: 'Android',
  deviceName: 'Pixel 3a XL API 29',
  app: '/Users/gandahalojasa/Documents/Project/Learn/Appium_React_Native/android/app/build/outputs/apk/debug/app-debug.apk'
}
const driver = wd.promiseChainRemote('localhost', PORT)

beforeAll(async () => {
  await driver.init(config)
  await driver.sleep(4000)
}) // Sometime for the app to load

test('login screen test', async () => {
  expect(await driver.hasElementByAccessibilityId('fieldEmail')).toBe(true)
  await driver.elementByAccessibilityId('fieldEmail').type('[email protected]')
  expect(await driver.hasElementByAccessibilityId('buttonLogin')).toBe(true)
  const element = await driver.elementByAccessibilityId('buttonLogin')
  await element.click()
  expect(await driver.hasElementByAccessibilityId('notHere')).toBe(false)
})

test('home screen test', async () => {
  expect(await driver.hasElementByAccessibilityId('buttonHome')).toBe(true)
  const element = await driver.elementByAccessibilityId('buttonHome')
  await element.click()
})

Did you run this code in ios?

robto09 avatar Jun 26 '20 14:06 robto09

Hi, Thanks for your information about appium. I want to ask you something. Lets say I have 2 screens, Login Screen and Home Screen. Login Screen will loaded first then Home Screen In Login screen I have accessibilityLabel fieldEmail and buttonLogin. In Home Screen I have accessibilityLabel buttonHome. How to tell appium, we need access buttonHome when Home Screen loaded? This is my code

/* eslint-disable no-undef */
import wd from 'wd'
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000
const PORT = 4723
const config = {
  platformName: 'Android',
  deviceName: 'Pixel 3a XL API 29',
  app: '/Users/gandahalojasa/Documents/Project/Learn/Appium_React_Native/android/app/build/outputs/apk/debug/app-debug.apk'
}
const driver = wd.promiseChainRemote('localhost', PORT)

beforeAll(async () => {
  await driver.init(config)
  await driver.sleep(4000)
}) // Sometime for the app to load

test('login screen test', async () => {
  expect(await driver.hasElementByAccessibilityId('fieldEmail')).toBe(true)
  await driver.elementByAccessibilityId('fieldEmail').type('[email protected]')
  expect(await driver.hasElementByAccessibilityId('buttonLogin')).toBe(true)
  const element = await driver.elementByAccessibilityId('buttonLogin')
  await element.click()
  expect(await driver.hasElementByAccessibilityId('notHere')).toBe(false)
})

test('home screen test', async () => {
  expect(await driver.hasElementByAccessibilityId('buttonHome')).toBe(true)
  const element = await driver.elementByAccessibilityId('buttonHome')
  await element.click()
})

Did you run this code in ios?

in run this code on android emulator

gandarain avatar Jul 01 '20 06:07 gandarain