Android SDK�W���̉��ł��e�X�g�c�[��uiautomator�̊�{�I�Ȏg�����F�X�}�z���������V�X�e���e�X�g�������c�[���i2�j�i3/3 �y�[�W�j

» 2014�N10��07�� 18��00�� ���J
[�O�R�����C�e�X�g������������iSTAR�j�^Android�e�X�g��]
�O�̃y�[�W�� 1|2|3 �@�@�@�@�@�@

UI�R���|�[�l���g�̑���

�@UI�R���|�[�l���g�𑀍삷�邽�߂̃��\�b�h��UiObject�N���X�ɂ܂Ƃ߂��Ă��܂��B�ȉ��f��\�I�Ȃ��̂ɂ‚��Đ������܂����A���ڍׂȏ���API���t�@�����X���Q�Ƃ��Ă��������B

  • click()�FUI�R���|�[�l���g���N���b�N
  • clickAndWaitForNewWindow()�FUI�R���|�[�l���g���N���b�N���A�E�B���h�E�̕ω��i�_�C�A���O�̕\���E��\���A�A�N�e�B�r�e�B�̑J�ڂȂǁj���N����܂ő҂�
  • setText()�F�ړI��UI�R���|�[�l���g��EditText�̂悤�ȃe�L�X�g���̓t�B�[���h�̂Ƃ��ɁA���̃e�L�X�g��ݒ�

�@setText()���\�b�h�́A�e�X�g�����s����[���̌���ݒ肪�p��ŁA���AIME���p����̓��[�h�łȂ��ƁA�z��Ƃ͈قȂ镶���񂪐ݒ肳��邱�Ƃ�����܂��B���͂ł���e�L�X�g������ASCII�͈̔͂Ɍ��肳��܂��B

�@�}���`�o�C�g�������������@�Ȃǂɂ‚��ẮA���񉞗p�҂ŏЉ�܂��B

�v�f�̌���

�@uiautomator�ɂ�����e�X�g�ł́AJUnit 3�Œ񋟂���Ă���uassertEquals(expected, actual)�v�Ȃǂ̃A�T�[�V�������\�b�h��p���Č��؂��܂��B

�@UI�R���|�[�l���g�̑����Ȃǂ��擾���郁�\�b�h��UiObject�N���X�ɗp�ӂ���Ă��܂��B���̃��\�b�h�ɂ��擾����UI�R���|�[�l���g�̑����iactual�j���A���ҁiexpected�j�ʂ�ł��邩�ǂ������AassertEquals()���\�b�h�Ō��؂��܂��B

�@UiObject�N���X�ɗp�ӂ���Ă���A��ȑ����擾�n�̃��\�b�h�͈ȉ��̒ʂ�ł��B

  • getText()�Ftext�����̒l���擾
  • getContentDescription()�FcontentDescription�����̒l���擾
  • isChecked()�Fchecked�����̒l���擾
  • isEnabled()�Fenabled�����̒l���擾
  • isFocused()�Ffocused�����̒l���擾
  • isSelected()�Fselected�����̒l���擾
  • exists()�F�������擾����̂ł͂Ȃ��A�ړI�Ƃ���UI�R���|�[�l���g�����݂��Ă��邩�ǂ�����boolean�ŕԂ�

�[���̉�]

�@�e�X�g�����s����[����Android 4.2�ȏ�̏ꍇ�́A�uUiDevice�v�N���X��setOrientation����n�܂郁�\�b�h���Ăяo�����ƂŁA�[�����w�肳�ꂽ�����ɉ�]�����邱�Ƃ��ł��܂��B��萳�m�Ɍ����ƁA�[�����w�肳�ꂽ�����ɉ�]�������̂悤�ɁA��ʂ̌������ω����܂��B

�@setOrientationNatural()�́A�[�����u���R�Ȍ����v�Ɏ������Ƃ��ɉ�ʂ̌������������Ȃ�悤�ɁA��ʂ���]���܂��BsetOrientationRight()��setOrientationLeft()�́A�[�����u���R�Ȍ����v����E�܂��͍��ɉ�]�������Ƃ��ɁA��ʂ̌������������Ȃ�悤�ɉ�ʂ���]���܂��B

�@�u���R�Ȍ����v���ǂ�������ԂȂ̂��͒[���ˑ��ł����AsetOrientationNatural()���Ă񂾌��getDisplayHeight()�EgetDisplayWidth()���\�b�h���Ăяo�����ƂŁA�u���R�ȏ�ԁv�ɂ������ʂ̍����ƕ����擾�ł���悤�ɂȂ��Ă��܂��B

�@�܂��AfreezeRotation()���\�b�h�ŃZ���T�[�ɂ���ʂ̎�����]�𖳌��ɂł��܂��B�����unfreezeRotation()���\�b�h�ʼn����i�L���Ɂj�ł��܂��B

�@�����̃��\�b�h���g���ɓ������ẮA�ȉ��̓_�ɒ��ӂ��Ă��������B

  • setOrientation����n�܂郁�\�b�h���ĂԂƁA��ʂ̌��������̂܂܌Œ肳��Ă��܂����߁A�㑱�̃e�X�g�ɉe������”\��������B�����������邽�߂ɁAtearDown()�ŕK��unfreezeRotation()���\�b�h���ĂԂ悤�ɂ���
  • ��ʂ̉�]����������܂ŁA�������Ԃ�������̂ŁA�K�XThread.sleep()���ĂԂ悤�ɂ���

�X�N���[���V���b�g�̎B�e

�@�e�X�g�����s����[����Android 4.2�ȏ�̏ꍇ�́A�uUiDevice.takeScreenshot()�v���\�b�h���Ăяo�����ƂŁA�C�ӂ̃^�C�~���O�ʼn�ʂ̃X�N���[���V���b�g���B�e�ł��܂��B

�@takeScreenshot()�̈����ɂ́A�ۑ���̃p�X������File�I�u�W�F�N�g���w��ł��܂��B

// �[�������� /mnt/sdcard/Pictures/ �f�B���N�g����
// screenshot.png �Ƃ����t�@�C�����ŃX�N���[���V���b�g��ۑ�����B
File filePath = new File("/mnt/sdcard/Pictures/screenshot.png");
getUiDevice().takeScreenshot(filePath);

�@�Ȃ��A�X�N���[���V���b�g�̕ۑ���́A�e�X�g�����s����[�������̃X�g���[�W�ɂȂ邽�߁A�ォ��X�N���[���V���b�g��[��������o���K�v������܂��B���̂��߂ɂ�adb pull�R�}���h�𗘗p���܂��B

$ adb pull �o�[�����ɕۑ������X�N���[���V���b�g�t�@�C���ւ̃t���p�X�p

�@�o�[�����ɕۑ������X�N���[���V���b�g�t�@�C���ւ̃t���p�X�p�ɂ́A��L�̗�ł����/mnt/sdcard/Pictures/screenshot.png���w�肵�܂��B

�e�X�g�̎��s

�@uiautomator�Ńe�X�g�����s����ɂ́A�e�X�g�X�N���v�g���r���h���ē�����jar�t�@�C�����A�e�X�g�����s����[������/data/local/tmp/�f�B���N�g���ɃC���X�g�[���i�]���j���Ă����K�v������܂��B�e�X�g�����s�������[����USB�P�[�u���ȂǂŐڑ����Aadb�ŔF�����ꂽ��Ԃɂ��Ă����Ă��������B

�@�܂��A�[����G�~�����[�^�[�𕡐��ڑ����Ă���ꍇ�́A�C���X�g�[�����ƃe�X�g���s���̃R�}���h���C���Ɉȉ��̃I�v�V����������lj�����K�v������܂��B

  • ant�R�}���h�����s����Ƃ��F-Dadb.device.arg="-s �o�V���A���ԍ��p"
  • adb�R�}���h�����s����Ƃ��F-s �o�V���A���ԍ��p

�@�����Ło�V���A���ԍ��p�́A�e�X�g�����s�������[���̃V���A���ԍ���\���܂��B�ڑ����Ă���[���̃V���A���ԍ���adb devices�R�}���h�����s����ƒm�邱�Ƃ��ł��܂��B

�@�ȉ��ł́A�uuiautomator�e�X�g�v���W�F�N�g�̃Z�b�g�A�b�v�v�̏͂ŗ�ɏo����UiautomatorSample�v���W�F�N�g���ɁA�e�X�g���r���h�E�C���X�g�[�����A���s������@��������܂��B

�r���h

�@Apache Ant��build�^�[�Q�b�g�����s���܂��B

$ cd uiautomator
$ ant build

�@�r���h����������ƁA�ubin/�v�f�B���N�g����UiautomatorSample.jar�Ƃ������O��jar�t�@�C������������܂��B����jar�t�@�C������.jar��菜���������́u�e�X�g�v���W�F�N�g���쐬�����v�̏͂�android create uitest-project�R�}���h�����s�����Ƃ���-n�I�v�V�����Ŏw�肵�����̂ƂȂ�܂��B

�C���X�g�[��

�@Apache Ant��install�^�[�Q�b�g�����s���܂��B

$ ant install

�@adb�R�}���h�𒼐ڎ��s���ăC���X�g�[�����邱�Ƃ��ł��܂��B���̏ꍇ�́A�ȉ��̃R�}���h�����s���Ă��������B

$ adb push bin/UiautomatorSample.jar /data/local/tmp/

�@�����ŁAbin/UiautomatorSample.jar�̉ӏ��ɂ́A�r���h���ɐ�������jar�t�@�C���ւ̃p�X���w�肵�܂��B

���s

�@�ȉ��̃R�}���h�����s���܂��B

$ adb shell uiautomator runtest UiautomatorSample.jar -c com.nowsprinting.hellotesting.uiautomator.CustomerDetailTest

�@�����ŁAUiautomatorSample.jar�̕����ɂ́A�e�X�g�Ώۃf�o�C�X�ɓ]������jar�t�@�C�����݂̂��w�肵�܂��B�p�X�͎w�肵�Ȃ��_�ɒ��ӂ��Ă��������B

�@-c�I�v�V�����ɂ́A���s�������e�X�g�P�[�X�iUiAutomatorTestCase�̃T�u�N���X�j�̃N���X����FQCN�iFully Qualified Class Name�j�Ŏw�肵�܂��B���̃I�v�V�����́A�e�X�g�����s����[����Android 4.3�ȏ�̏ꍇ�͏ȗ����邱�Ƃ��ł��܂��B�ȗ������ꍇ�A�e�X�g�v���W�F�N�g��jar�t�@�C���Ɋ܂܂��S�e�X�g�P�[�X�����s����܂��B

�R�����u�T���v�������s����Ƃ��́v

�@�T���v���̃e�X�g�X�N���v�g�����s����ꍇ�́A�e�X�g���s�ɐ旧���āA�e�X�g�Ώۃf�o�C�X��ŁA�T���v���A�v���N������̉�ʁi�ڋq�ꗗ��ʁj��\�������Ă����Ă��������B

�@�e�X�g���s�̂��߂ɓ��͂���R�}���h�́A�R�}���h���C�������̒l�Ȃǂ��܂߂āA��L�R�}���h��Ɠ����ł��B


�@uiautomator�R�}���h�̈����ɂ‚��Ă̏ڍׂ́Auiautomator�R�}���h�̃}�j���A�����Q�Ƃ��Ă��������B

����́Auiautomator���p��

�@����́Auiautomator�ɂ‚��āA��{�I�ȂƂ����������܂����B�Œ���A����̋L���̓��e�𗝉����Ă����΁A�e�X�g�X�N���v�g�������n�߂邱�Ƃ��ł���ł��傤�B

�@����́A�m���Ă����ƕ֗��ȁAuiautomator�̉��p�I�ȃg�s�b�N���Љ�܂��B

���҃v���t�B�[��

�O�R ����

�e�X�g������������iSTAR�j�^Android�e�X�g��

NTT�\�t�g�E�F�A������ЋΖ��B���N�O���Android�A�v���P�[�V�����J���ɂ������n�߂��̂�؂��|���ɁAAndroid�ɂ����鎩���e�X�g�ɋ��������‚悤�ɂȂ�BAndroid�֘A�v���W�F�N�g�ɑ΂���Z�p�x���Ɩ��Ɍg��Ȃ���AAndroid�����̃e�X�g�c�[���������ƍL���g����悤�ɂȂ邱�Ƃ�����āA�u���O�ɂċZ�p���𔭐M��

Blog�Fsumio�̋Z�p����

Twitter�F@sumio_tym


�O�̃y�[�W�� 1|2|3 �@�@�@�@�@�@

Copyright © ITmedia, Inc. All Rights Reserved.

'; this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B