Changed xpath locators to accessibility labels in end to end tests

Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
This commit is contained in:
yevh-berdnyk 2018-03-15 22:01:08 +02:00 committed by Anton Danchenko
parent 1248a469a6
commit b0a2bbe27b
No known key found for this signature in database
GPG Key ID: C2D4819B698627E4
19 changed files with 143 additions and 171 deletions

View File

@ -3,11 +3,13 @@ import sys
import re
import subprocess
import asyncio
from selenium.common.exceptions import WebDriverException
from tests import test_suite_data, start_threads
from os import environ
from appium import webdriver
from abc import ABCMeta, abstractmethod
from selenium.common.exceptions import WebDriverException
from tests import test_suite_data, start_threads
from views.base_view import BaseView
class AbstractTestCase:
@ -54,7 +56,7 @@ class AbstractTestCase:
desired_caps['build'] = pytest.config.getoption('build')
desired_caps['name'] = test_suite_data.current_test.name
desired_caps['platformName'] = 'Android'
desired_caps['appiumVersion'] = '1.7.1'
desired_caps['appiumVersion'] = '1.7.2'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = 'Android GoogleAPI Emulator'
desired_caps['deviceOrientation'] = "portrait"
@ -69,7 +71,7 @@ class AbstractTestCase:
desired_caps['app'] = pytest.config.getoption('apk')
desired_caps['deviceName'] = 'nexus_5'
desired_caps['platformName'] = 'Android'
desired_caps['appiumVersion'] = '1.7.1'
desired_caps['appiumVersion'] = '1.7.2'
desired_caps['platformVersion'] = '6.0'
desired_caps['newCommandTimeout'] = 600
desired_caps['fullReset'] = False
@ -113,6 +115,7 @@ class SingleDeviceTestCase(AbstractTestCase):
self.driver = webdriver.Remote(capabilities[self.environment]['executor'],
capabilities[self.environment]['capabilities'])
self.driver.implicitly_wait(self.implicitly_wait)
BaseView(self.driver).accept_agreements()
test_suite_data.current_test.jobs.append(self.driver.session_id)
break
except WebDriverException:
@ -137,6 +140,7 @@ class LocalMultipleDeviceTestCase(AbstractTestCase):
for driver in range(quantity):
self.drivers[driver] = webdriver.Remote(self.executor_local, capabilities[driver])
self.drivers[driver].implicitly_wait(self.implicitly_wait)
BaseView(self.drivers[driver]).accept_agreements()
test_suite_data.current_test.jobs.append(self.drivers[driver].session_id)
def teardown_method(self, method):
@ -164,6 +168,7 @@ class SauceMultipleDeviceTestCase(AbstractTestCase):
self.capabilities_sauce_lab))
for driver in range(quantity):
self.drivers[driver].implicitly_wait(self.implicitly_wait)
BaseView(self.drivers[driver]).accept_agreements()
test_suite_data.current_test.jobs.append(self.drivers[driver].session_id)
def teardown_method(self, method):

View File

@ -4,7 +4,7 @@ import pytest
import emoji
from tests.base_test_case import MultipleDeviceTestCase
from tests import group_chat_users
from tests import group_chat_users, get_current_time
from views.sign_in_view import SignInView
unicode_text_message = '%s%s%s%s %s%s%s%s%s%s%s' % (chr(355), chr(275), chr(353), chr(539), chr(1084), chr(949),
@ -106,7 +106,7 @@ class TestMessages(MultipleDeviceTestCase):
home_1.add_contact(public_key)
home_1.get_back_to_home_view()
chat_name = 'super_group_chat'
chat_name = 'a_chat_%s' % get_current_time()
home_1.create_group_chat(sorted([username_2, username_3]), chat_name)
chat_1 = home_1.get_chat_view()
text_message = 'This is text message!'
@ -117,27 +117,27 @@ class TestMessages(MultipleDeviceTestCase):
chat_2, chat_3 = home_2.get_chat_view(), home_3.get_chat_view()
for chat in chat_2, chat_3:
chat.wait_for_messages_by_user(username_1, text_message, self.errors)
chat.wait_for_messages(username_1, text_message, self.errors)
chat_2.chat_message_input.send_keys(emoji.emojize(emoji_name))
chat_2.send_message_button.click()
for chat in chat_1, chat_3:
chat.wait_for_messages_by_user(username_2, emoji_unicode, self.errors)
chat.wait_for_messages(username_2, emoji_unicode, self.errors)
message_with_emoji = 'message with emoji'
chat_3.chat_message_input.send_keys(emoji.emojize('%s %s' % (message_with_emoji, emoji_name_1)))
chat_3.send_message_button.click()
for chat in chat_1, chat_2:
chat.wait_for_messages_by_user(username_3, '%s %s' % (message_with_emoji, emoji_unicode_1), self.errors)
chat.wait_for_messages(username_3, '%s %s' % (message_with_emoji, emoji_unicode_1), self.errors)
chat_1.chat_message_input.send_keys(unicode_text_message)
chat_1.send_message_button.click()
for chat in chat_2, chat_3:
chat.wait_for_messages_by_user(username_1, unicode_text_message, self.errors)
chat.wait_for_messages(username_1, unicode_text_message, self.errors)
for chat in chat_1, chat_2, chat_3:
chat.delete_chat(chat_name, self.errors)
# for chat in chat_1, chat_2, chat_3:
# chat.delete_chat(chat_name, self.errors)
self.verify_no_errors()
@ -160,7 +160,7 @@ class TestMessages(MultipleDeviceTestCase):
for message in messages_to_send_1:
chat_1.chat_message_input.send_keys(message)
chat_1.send_message_button.click()
chat_2.wait_for_messages_by_user(users[0], messages_to_send_1, self.errors)
chat_2.wait_for_messages(users[0], messages_to_send_1, self.errors)
message_with_emoji = 'message with emoji'
messages_to_send_2 = [emoji.emojize(emoji_name), emoji.emojize('%s %s' % (message_with_emoji, emoji_name_1))]
@ -170,7 +170,7 @@ class TestMessages(MultipleDeviceTestCase):
chat_2.send_message_button.click()
chat_2.send_as_keyevent(message_with_new_line)
chat_2.send_message_button.click()
chat_1.wait_for_messages_by_user(users[1], messages_to_receive_2, self.errors)
chat_1.wait_for_messages(users[1], messages_to_receive_2, self.errors)
for chat in chat_1, chat_2:
chat.delete_chat(chat_name, self.errors)
self.verify_no_errors()

View File

@ -35,9 +35,13 @@ class TestProfileView(SingleDeviceTestCase):
sign_in_view = SignInView(self.driver)
sign_in_view.create_user()
profile_view = sign_in_view.profile_button.click()
profile_view.advanced_button.click()
sign_in_view = profile_view.switch_network('Rinkeby with upstream RPC')
sign_in_view.first_account_button.click()
sign_in_view.password_input.set_value('qwerty1234')
sign_in_view.sign_in_button.click()
desired_network = sign_in_view.element_by_text('RINKEBY WITH UPSTREAM RPC')
sign_in_view.profile_button.click_until_presence_of_element(desired_network)
sign_in_view.profile_button.click_until_presence_of_element(profile_view.advanced_button)
profile_view.advanced_button.click()
desired_network = profile_view.element_by_text('RINKEBY WITH UPSTREAM RPC', 'text')
desired_network.scroll_to_element()
assert desired_network.is_element_displayed()

View File

@ -68,7 +68,7 @@ class TestSanity(SingleDeviceTestCase):
sign_in_view.create_user()
home_view = sign_in_view.get_home_view()
start_new_chat_view = home_view.plus_button.click()
start_new_chat_view.add_new_contact.click()
start_new_chat_view.start_new_chat_button.click()
contact_jarrad = home_view.element_by_text('Jarrad', 'button')
contact_jarrad.scroll_to_element()
contact_jarrad.click()
@ -82,7 +82,7 @@ class TestSanity(SingleDeviceTestCase):
sign_in_view.apps_button.click()
sign_in_view.status_app_icon.scroll_to_element()
sign_in_view.status_app_icon.click()
sign_in_view.ok_button_apk.click()
sign_in_view.ok_button.click()
sign_in_view.first_account_button.click()
sign_in_view.password_input.send_keys('qwerty1234')
sign_in_view.sign_in_button.click()

View File

@ -135,7 +135,7 @@ class TestTransaction(SingleDeviceTestCase):
send_transaction.done_button.click_until_presence_of_element(send_transaction.sign_later_button)
send_transaction.sign_later_button.click()
send_transaction.yes_button.click()
send_transaction.ok_button_apk.click()
send_transaction.ok_button.click()
transactions_view = wallet_view.transactions_button.click()
transactions_view.unsigned_tab.click()
transactions_view.sign_button.click()
@ -157,10 +157,6 @@ class TestTransaction(SingleDeviceTestCase):
home_view.add_contact(recipient['public_key'])
home_view.get_back_to_home_view()
wallet_view = home_view.wallet_button.click()
wallet_view.options_button.click_until_presence_of_element(wallet_view.manage_assets_button)
wallet_view.manage_assets_button.click()
wallet_view.stt_check_box.click()
wallet_view.done_button.click()
send_transaction = wallet_view.send_button.click()
send_transaction.select_asset_button.click_until_presence_of_element(send_transaction.stt_button)
send_transaction.stt_button.click()

View File

@ -57,6 +57,15 @@ class BaseElement(object):
seconds)
raise exception
def wait_for_visibility_of_element(self, seconds=10):
try:
return WebDriverWait(self.driver, seconds)\
.until(expected_conditions.visibility_of_element_located((self.locator.by, self.locator.value)))
except TimeoutException as exception:
exception.msg = "'%s' is not found on screen, using: '%s', during '%s' seconds" % (self.name, self.locator,
seconds)
raise exception
def scroll_to_element(self):
for _ in range(9):
try:
@ -68,8 +77,14 @@ class BaseElement(object):
def is_element_present(self, sec=5):
try:
info('Wait for %s' % self.name)
self.wait_for_element(sec)
return True
return self.wait_for_element(sec)
except TimeoutException:
return False
def is_element_displayed(self, sec=5):
try:
info('Wait for %s' % self.name)
return self.wait_for_visibility_of_element(sec)
except TimeoutException:
return False

View File

@ -3,7 +3,7 @@ import base64
import zbarlight
from tests import info
from eth_keys import datatypes
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from PIL import Image
from datetime import datetime
from io import BytesIO
@ -13,7 +13,7 @@ from views.base_element import BaseButton, BaseElement, BaseEditBox, BaseText
class BackButton(BaseButton):
def __init__(self, driver):
super(BackButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@content-desc='toolbar-back-button']")
self.locator = self.Locator.accessibility_id('back-button')
def click(self, times_to_click: int = 1):
for _ in range(times_to_click):
@ -66,16 +66,16 @@ class OkButton(BaseButton):
self.locator = self.Locator.xpath_selector("//*[@text='OK']")
class ContinueButtonAPK(BaseButton):
class ContinueButton(BaseButton):
def __init__(self, driver):
super(ContinueButtonAPK, self).__init__(driver)
super(ContinueButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Continue']")
class HomeButton(BaseButton):
def __init__(self, driver):
super(HomeButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Home']/..")
self.locator = self.Locator.accessibility_id('home-tab-button')
def navigate(self):
from views.home_view import HomeView
@ -85,7 +85,7 @@ class HomeButton(BaseButton):
class WalletButton(BaseButton):
def __init__(self, driver):
super(WalletButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Wallet']/..")
self.locator = self.Locator.accessibility_id('wallet-tab-button')
def click(self):
from views.wallet_view import TransactionsButton
@ -100,7 +100,7 @@ class WalletButton(BaseButton):
class ProfileButton(BaseButton):
def __init__(self, driver):
super(ProfileButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Profile']/..")
self.locator = self.Locator.accessibility_id('profile-tab-button')
def navigate(self):
from views.profile_view import ProfileView
@ -171,8 +171,8 @@ class BaseView(object):
self.back_button = BackButton(self.driver)
self.allow_button = AllowButton(self.driver)
self.deny_button = DenyButton(self.driver)
self.continue_button_apk = ContinueButtonAPK(self.driver)
self.ok_button_apk = OkButton(self.driver)
self.continue_button = ContinueButton(self.driver)
self.ok_button = OkButton(self.driver)
self.next_button = NextButton(self.driver)
self.save_button = SaveButton(self.driver)
self.done_button = DoneButton(self.driver)
@ -188,6 +188,14 @@ class BaseView(object):
'text': BaseText
}
def accept_agreements(self):
for i in self.ok_button, self.continue_button:
try:
i.wait_for_element(4)
i.click()
except (NoSuchElementException, TimeoutException):
pass
@property
def logcat(self):
return self.driver.get_log("logcat")

View File

@ -121,7 +121,8 @@ class OpenInBrowserButton(BaseButton):
class CommandsButton(BaseButton):
def __init__(self, driver):
super(CommandsButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('(// android.view.ViewGroup[@ content-desc="icon"])[3]')
self.locator = self.Locator.xpath_selector(
'//*[@content-desc="chat-message-input"]/..//android.view.ViewGroup[@content-desc="icon"]')
class ViewProfileButton(BaseButton):
@ -186,6 +187,22 @@ class ChatView(BaseView):
errors.append('Not received messages from user %s: "%s"' % (username, ', '.join(
[i for i in list(set(expected_messages) - set(received_messages))])))
def wait_for_messages(self, username: str, expected_messages: list, errors: list, wait_time: int = 30):
expected_messages = expected_messages if type(expected_messages) == list else [expected_messages]
repeat = 0
received_messages = list()
while repeat <= wait_time:
for message in expected_messages:
if self.element_by_text(message, 'text').is_element_present(1):
received_messages.append(message)
if not set(expected_messages) - set(received_messages):
break
time.sleep(3)
repeat += 3
if set(expected_messages) - set(received_messages):
errors.append('Not received messages from user %s: "%s"' % (username, ', '.join(
[i for i in list(set(expected_messages) - set(received_messages))])))
def send_eth_to_request(self, request, sender_password):
gas_popup = self.element_by_text_part('Specify amount')
request.click_until_presence_of_element(gas_popup)

View File

@ -45,15 +45,6 @@ class ConsoleView(BaseView):
self.recover_button = RecoverButton(self.driver)
self.chat_request_input = ChatRequestInput(self.driver)
self.accept_agreements()
def accept_agreements(self):
for i in self.ok_button_apk, self.continue_button_apk:
try:
i.click()
except (NoSuchElementException, TimeoutException):
pass
def create_user(self):
self.request_password_icon.click()
self.chat_request_input.send_keys("qwerty1234")

View File

@ -24,8 +24,7 @@ class PlusButton(BaseButton):
class PublicKeyEditBox(BaseEditBox):
def __init__(self, driver):
super(PublicKeyEditBox, self).__init__(driver)
self.locator = \
self.Locator.xpath_selector("//*[@text='Enter contact code']")
self.locator = self.Locator.accessibility_id('enter-contact-code-input')
class ConfirmPublicKeyButton(BaseButton):

View File

@ -1,28 +0,0 @@
from views.base_view import BaseView
import time
from views.base_element import *
class AllRecent(BaseButton):
def __init__(self, driver):
super(AllRecent, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Recent statuses']/..//*[@text='ALL']")
class AllPopular(BaseButton):
def __init__(self, driver):
super(AllPopular, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Popular #hashtags']/..//*[@text='ALL']")
class DiscoverView(BaseView):
def __init__(self, driver):
super(DiscoverView, self).__init__(driver)
self.driver = driver
self.all_popular = AllPopular(self.driver)
self.all_recent = AllRecent(self.driver)

View File

@ -14,6 +14,12 @@ class PlusButton(BaseButton):
from views.start_new_chat_view import StartNewChatView
return StartNewChatView(self.driver)
def click(self):
from views.start_new_chat_view import StartNewChatButton
desired_element = StartNewChatButton(self.driver)
self.click_until_presence_of_element(desired_element=desired_element)
return self.navigate()
class ConsoleButton(BaseButton):
def __init__(self, driver):
@ -70,7 +76,7 @@ class HomeView(BaseView):
def get_back_to_home_view(self):
counter = 0
while not self.home_button.is_element_present():
while not self.home_button.is_element_displayed(2):
try:
if counter >= 5:
return
@ -80,9 +86,11 @@ class HomeView(BaseView):
def add_contact(self, public_key):
start_new_chat = self.plus_button.click()
start_new_chat.add_new_contact.click()
start_new_chat.public_key_edit_box.send_keys(public_key)
start_new_chat.start_new_chat_button.click()
start_new_chat.public_key_edit_box.set_value(public_key)
start_new_chat.confirm()
one_to_one_chat = self.get_chat_view()
one_to_one_chat.chat_message_input.wait_for_element(60)
def create_group_chat(self, user_names_to_add: list, group_chat_name: str = 'new_group_chat'):
start_new_chat = self.plus_button.click()

View File

@ -1,36 +0,0 @@
from views.base_view import BaseView
from views.base_element import *
class ProfileIcon(BaseButton):
def __init__(self, driver):
super(ProfileIcon, self).__init__(driver)
self.locator = self.Locator.accessibility_id('drawer-profile-icon')
def navigate(self):
from views.profile_view import ProfileView
return ProfileView(self.driver)
class SwitchUsersButton(BaseButton):
def __init__(self, driver):
super(SwitchUsersButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='SWITCH USERS']")
def click(self):
self.find_element().click()
info('Tap on %s' % self.name)
return self.navigate()
def navigate(self):
from views.sign_in_view import SignInView
return SignInView(self.driver)
class ProfileDrawer(BaseView):
def __init__(self, driver):
super(ProfileDrawer, self).__init__(driver)
self.driver = driver
self.profile_icon = ProfileIcon(self.driver)
self.switch_users_button = SwitchUsersButton(self.driver)

View File

@ -1,5 +1,4 @@
import time
import pytest
from tests import info
from views.base_element import BaseText, BaseButton, BaseEditBox
from views.base_view import BaseView
@ -9,7 +8,7 @@ class PublicKeyText(BaseText):
def __init__(self, driver):
super(PublicKeyText, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[contains(@text, "0x04")]')
self.locator = self.Locator.accessibility_id('address-text')
@property
def text(self):
@ -55,7 +54,7 @@ class NetworkSettingsButton(BaseButton):
def __init__(self, driver):
super(NetworkSettingsButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@text="Network"]')
self.locator = self.Locator.accessibility_id('network-button')
class NetworkButton(BaseButton):
def __init__(self, driver, network):
@ -66,7 +65,7 @@ class NetworkSettingsButton(BaseButton):
def __init__(self, driver):
super(NetworkSettingsButton.ConnectButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@text="CONNECT"]')
self.locator = self.Locator.accessibility_id('network-connect-button')
class LogoutButton(BaseButton):
@ -96,29 +95,40 @@ class ShareMyContactKeyButton(BaseButton):
def __init__(self, driver):
super(ShareMyContactKeyButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@text="SHARE MY CONTACT CODE"]')
self.locator = self.Locator.accessibility_id('share-my-contact-code-button')
class EditButton(BaseButton):
def __init__(self, driver):
super(EditButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@text="EDIT"]')
self.locator = self.Locator.accessibility_id('edit-button')
class ConfirmButton(BaseButton):
def __init__(self, driver):
super(ConfirmButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('(//android.view.ViewGroup[@content-desc="icon"])[1]')
self.locator = self.Locator.accessibility_id('done-button')
class CrossIcon(BaseButton):
def __init__(self, driver):
super(CrossIcon, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
'(// android.view.ViewGroup[@ content-desc="icon"])[1]/android.view.View')
self.locator = self.Locator.accessibility_id('done-button')
class AdvancedButton(BaseButton):
def __init__(self, driver):
super(AdvancedButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@text="Advanced"]')
def click(self):
self.scroll_to_element().click()
info('Tap on %s' % self.name)
return self.navigate()
class ProfileView(BaseView):
@ -146,6 +156,7 @@ class ProfileView(BaseView):
self.edit_button = EditButton(self.driver)
self.confirm_button = ConfirmButton(self.driver)
self.cross_icon = CrossIcon(self.driver)
self.advanced_button = AdvancedButton(self.driver)
def switch_network(self, network):
self.network_settings_button.scroll_to_element()

View File

@ -1,32 +1,30 @@
from views.base_element import BaseButton, BaseEditBox
from views.base_view import BaseView
from selenium.common.exceptions import NoSuchElementException, TimeoutException
class FirstRecipient(BaseButton):
def __init__(self, driver):
super(FirstRecipient, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Choose recipient']/.."
"//android.widget.ImageView[@content-desc='chat-icon']")
self.locator = self.Locator.accessibility_id('chat-icon')
class SignTransactionButton(BaseButton):
def __init__(self, driver):
super(SignTransactionButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='SIGN TRANSACTION']")
self.locator = self.Locator.accessibility_id('sign-transaction-button')
class SignLaterButton(BaseButton):
def __init__(self, driver):
super(SignLaterButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='SIGN LATER']")
self.locator = self.Locator.accessibility_id('sign-later-button')
class AmountEditBox(BaseEditBox, BaseButton):
def __init__(self, driver):
super(AmountEditBox, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Amount']/..//android.widget.EditText")
self.locator = self.Locator.accessibility_id('amount-input')
class PasswordInput(BaseEditBox):
@ -38,7 +36,7 @@ class PasswordInput(BaseEditBox):
class EnterPasswordInput(BaseEditBox):
def __init__(self, driver):
super(EnterPasswordInput, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.EditText[@NAF='true']")
self.locator = self.Locator.accessibility_id('enter-password-input')
class ConfirmButton(BaseButton):
@ -50,14 +48,14 @@ class ConfirmButton(BaseButton):
class GotItButton(BaseButton):
def __init__(self, driver):
super(GotItButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='GOT IT']")
self.locator = self.Locator.accessibility_id('got-it-button')
class ChooseRecipientButton(BaseButton):
def __init__(self, driver):
super(ChooseRecipientButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Specify recipient...']")
self.locator = self.Locator.accessibility_id('choose-recipient-button')
def click(self):
desired_element = EnterRecipientAddressButton(self.driver)
@ -85,7 +83,7 @@ class RecentRecipientsButton(BaseButton):
class SelectAssetButton(BaseButton):
def __init__(self, driver):
super(SelectAssetButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('(//android.view.ViewGroup[@content-desc="icon"])[4]/..')
self.locator = self.Locator.accessibility_id('choose-asset-button')
class STTButton(BaseButton):

View File

@ -1,4 +1,3 @@
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from tests import get_current_time
from views.base_element import BaseButton, BaseEditBox
from views.base_view import BaseView
@ -89,15 +88,6 @@ class SignInView(BaseView):
self.confirm_password_input = ConfirmPasswordInput(self.driver)
self.name_input = NameInput(self.driver)
self.accept_agreements()
def accept_agreements(self):
for i in self.ok_button_apk, self.continue_button_apk:
try:
i.click()
except (NoSuchElementException, TimeoutException):
pass
def create_user(self):
self.create_account_button.click()
self.password_input.set_value('qwerty1234')

View File

@ -2,60 +2,54 @@ from views.base_element import BaseButton, BaseEditBox
from views.contacts_view import ContactsView
class AddNewContactButton(BaseButton):
class StartNewChatButton(BaseButton):
def __init__(self, driver):
super(AddNewContactButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='Start new chat']")
super(StartNewChatButton, self).__init__(driver)
self.locator = self.Locator.accessibility_id('start-1-1-chat-button')
class NewGroupChatButton(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='Start group chat']")
self.locator = self.Locator.accessibility_id('start-group-chat-button')
class JoinPublicChatButton(BaseButton):
def __init__(self, driver):
super(JoinPublicChatButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='Join public chat']")
self.locator = self.Locator.accessibility_id('join-public-chat-button')
class ChatNameEditBox(BaseEditBox):
def __init__(self, driver):
super(ChatNameEditBox, self).__init__(driver)
self.locator = \
self.Locator.xpath_selector("//android.widget.EditText")
self.locator = self.Locator.accessibility_id('chat-name-input')
class OpenDAapButton(BaseButton):
def __init__(self, driver):
super(OpenDAapButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='Open ÐApp']")
self.locator = self.Locator.accessibility_id('open-dapp-button')
class OpenButton(BaseButton):
def __init__(self, driver):
super(OpenButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='Open']")
self.locator = self.Locator.accessibility_id('open-dapp-button')
class ConfirmButton(BaseButton):
def __init__(self, driver):
super(ConfirmButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('(//android.view.ViewGroup[@content-desc="icon"])[2]')
self.locator = self.Locator.accessibility_id('create-button')
class EnterUrlEditbox(BaseEditBox):
def __init__(self, driver):
super(EnterUrlEditbox, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.EditText")
self.locator = self.Locator.accessibility_id('dapp-url-input')
class UsernameCheckbox(BaseButton):
@ -68,7 +62,7 @@ class StartNewChatView(ContactsView):
def __init__(self, driver):
super(StartNewChatView, self).__init__(driver)
self.add_new_contact = AddNewContactButton(self.driver)
self.start_new_chat_button = StartNewChatButton(self.driver)
self.new_group_chat_button = NewGroupChatButton(self.driver)
self.join_public_chat_button = JoinPublicChatButton(self.driver)

View File

@ -56,18 +56,18 @@ class TransactionTable(BaseElement):
class HistoryTab(BaseButton):
def __init__(self, driver):
super(HistoryTab, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='HISTORY']")
self.locator = self.Locator.accessibility_id('history-button')
class UnsignedTab(BaseButton):
def __init__(self, driver):
super(UnsignedTab, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='UNSIGNED']")
self.locator = self.Locator.accessibility_id('unsigned-transactions-button')
class SignButton(BaseButton):
def __init__(self, driver):
super(UnsignedTab.SignButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='SIGN']")
self.locator = self.Locator.accessibility_id('sign-button')
class TransactionsView(BaseView):

View File

@ -7,7 +7,7 @@ class SendButton(BaseButton):
def __init__(self, driver):
super(SendButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Send transaction']")
self.locator = self.Locator.accessibility_id('send-transaction-button')
def navigate(self):
from views.send_transaction_view import SendTransactionView
@ -18,7 +18,7 @@ class RequestButton(BaseButton):
def __init__(self, driver):
super(RequestButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Receive transaction']")
self.locator = self.Locator.accessibility_id('receive-transaction-button')
def navigate(self):
from views.send_transaction_view import SendTransactionView
@ -29,21 +29,21 @@ class SendRequestButton(BaseButton):
def __init__(self, driver):
super(SendRequestButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='SEND REQUEST']")
self.locator = self.Locator.accessibility_id('sent-request-button')
class ChooseRecipientButton(BaseButton):
def __init__(self, driver):
super(ChooseRecipientButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Choose recipient...']")
self.locator = self.Locator.accessibility_id('choose-recipient-button')
class TransactionsButton(BaseButton):
def __init__(self, driver):
super(TransactionsButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Transaction History']")
self.locator = self.Locator.accessibility_id('transaction-history-button')
def navigate(self):
from views.transactions_view import TransactionsView
@ -71,13 +71,13 @@ class UsdTotalValueText(BaseText):
class SendTransactionRequestButton(BaseButton):
def __init__(self, driver):
super(SendTransactionRequestButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='SEND A TRANSACTION REQUEST']")
self.locator = self.Locator.accessibility_id('sent-transaction-request-button')
class OptionsButton(BaseButton):
def __init__(self, driver):
super(OptionsButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('(//android.view.ViewGroup[@content-desc="icon"])[1]')
self.locator = self.Locator.accessibility_id('options-menu-button')
class ManageAssetsButton(BaseButton):
@ -89,13 +89,13 @@ class ManageAssetsButton(BaseButton):
class STTCheckBox(BaseButton):
def __init__(self, driver):
super(STTCheckBox, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='STT']//..//android.widget.CheckBox")
self.locator = self.Locator.xpath_selector("//*[@text='STT']/../android.widget.CheckBox")
class DoneButton(BaseButton):
def __init__(self, driver):
super(DoneButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Done']")
self.locator = self.Locator.accessibility_id('done-button')
class WalletView(BaseView):