Anton Danchenko 98beef138f added 'send transaction initiated from the DApp' and 'send transaction with invalid password' tests, basetestcase reworked for smooth local runs
added 'send transaction initiated from the DApp' and 'send transaction with invalid password' tests, basetestcase reworked for smooth local runs
2017-10-10 18:41:18 +03:00

257 lines
9.2 KiB
Python

from views.base_view import BaseViewObject
import pytest
import time
from views.base_element import *
class ProfileButton(BaseButton):
def __init__(self, driver):
super(ProfileButton, self).__init__(driver)
self.locator = self.Locator.accessibility_id('toolbar-hamburger-menu')
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 import ProfileViewObject
return ProfileViewObject(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):
time.sleep(2)
self.find_element().click()
logging.info('Tap on %s' % self.name)
return self.navigate()
def navigate(self):
from views.login import LoginView
return LoginView(self.driver)
class PlusButton(BaseButton):
def __init__(self, driver):
super(PlusButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='+']")
class ConsoleButton(BaseButton):
def __init__(self, driver):
super(ConsoleButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//*[@text='Console']")
class AddNewContactButton(BaseButton):
def __init__(self, driver):
super(AddNewContactButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='Add new contact']")
class NewContactButton(BaseButton):
def __init__(self, driver):
super(NewContactButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='']")
class NewGroupChatButton(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='New group chat']")
class NextButton(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton.NextButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='NEXT']")
class NameEditBox(BaseEditBox):
def __init__(self, driver):
super(NewGroupChatButton.NameEditBox, self).__init__(driver)
self.locator = \
self.Locator.xpath_selector("//android.widget.EditText[@NAF='true']")
class SaveButton(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton.SaveButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.widget.TextView[@text='SAVE']")
class GroupChatOptions(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton.GroupChatOptions, self).__init__(driver)
self.locator = self.Locator.xpath_selector(
"//android.view.ViewGroup[2]//android.widget.TextView[@text='n']")
class ChatSettings(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton.ChatSettings, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='Settings']")
class UserOptions(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton.UserOptions, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//android.widget.ImageView[@content-desc="chat-icon"]'
'/../..//android.view.View')
class RemoveButton(BaseButton):
def __init__(self, driver):
super(NewGroupChatButton.RemoveButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='Remove']")
class PublicKeyEditBox(BaseEditBox):
def __init__(self, driver):
super(PublicKeyEditBox, self).__init__(driver)
self.locator = \
self.Locator.xpath_selector("//android.widget.EditText[@NAF='true']")
class ConfirmPublicKeyButton(BaseButton):
def __init__(self, driver):
super(ConfirmPublicKeyButton, self).__init__(driver)
self.locator = \
self.Locator.accessibility_id('toolbar-action')
class ChatMessageInput(BaseEditBox):
def __init__(self, driver):
super(ChatMessageInput, self).__init__(driver)
self.locator = self.Locator.accessibility_id('chat-message-input')
class SendMessageButton(BaseButton):
def __init__(self, driver):
super(SendMessageButton, self).__init__(driver)
self.locator = self.Locator.accessibility_id("send-message-button")
def click(self):
self.find_element().click()
logging.info('Tap on %s' % self.name)
class UserNameText(BaseText):
def __init__(self, driver):
super(UserNameText, self).__init__(driver)
self.locator = \
self.Locator.xpath_selector("//android.widget.ScrollView//android.widget.TextView")
class SendFundsButton(BaseButton):
def __init__(self, driver):
super(SendFundsButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='/send']")
class FirstRecipient(BaseButton):
def __init__(self, driver):
super(SendFundsButton.FirstRecipient, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Choose recipient']/.."
"//android.widget.ImageView[@content-desc='chat-icon']")
class SignTransactionButton(BaseButton):
def __init__(self, driver):
super(SendFundsButton.SignTransactionButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='SIGN TRANSACTION']")
class PasswordInput(BaseEditBox):
def __init__(self, driver):
super(SendFundsButton.PasswordInput, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Password']")
class EnterPasswordInput(BaseEditBox):
def __init__(self, driver):
super(SendFundsButton.EnterPasswordInput, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.EditText[@NAF='true']")
class ConfirmButton(BaseButton):
def __init__(self, driver):
super(SendFundsButton.ConfirmButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='CONFIRM']")
class GotItButton(BaseButton):
def __init__(self, driver):
super(SendFundsButton.GotItButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='GOT IT']")
class ChatsViewObject(BaseViewObject):
def __init__(self, driver):
super(ChatsViewObject, self).__init__(driver)
self.driver = driver
self.profile_button = ProfileButton(self.driver)
self.profile_icon = ProfileIcon(self.driver)
self.switch_users_button = SwitchUsersButton(self.driver)
self.plus_button = PlusButton(self.driver)
self.add_new_contact = AddNewContactButton(self.driver)
self.console_button = ConsoleButton(self.driver)
self.public_key_edit_box = PublicKeyEditBox(self.driver)
self.confirm_public_key_button = ConfirmPublicKeyButton(self.driver)
self.new_group_chat_button = NewGroupChatButton(self.driver)
self.next_button = NewGroupChatButton.NextButton(self.driver)
self.name_edit_box = NewGroupChatButton.NameEditBox(self.driver)
self.save_button = NewGroupChatButton.SaveButton(self.driver)
self.group_chat_options = NewGroupChatButton.GroupChatOptions(self.driver)
self.chat_settings = NewGroupChatButton.ChatSettings(self.driver)
self.user_options = NewGroupChatButton.UserOptions(self.driver)
self.remove_button = NewGroupChatButton.RemoveButton(self.driver)
self.chat_message_input = ChatMessageInput(self.driver)
self.send_message_button = SendMessageButton(self.driver)
self.user_name_text = UserNameText(self.driver)
self.send_funds_button = SendFundsButton(self.driver)
self.first_recipient_button = SendFundsButton.FirstRecipient(self.driver)
self.sign_transaction_button = SendFundsButton.SignTransactionButton(self.driver)
self.confirm_button = SendFundsButton.ConfirmButton(self.driver)
self.password_input = SendFundsButton.PasswordInput(self.driver)
self.enter_password_input = SendFundsButton.EnterPasswordInput(self.driver)
self.got_it_button = SendFundsButton.GotItButton(self.driver)
self.new_contact_button = NewContactButton(self.driver)
def wait_for_syncing_complete(self):
logging.info('Waiting for syncing complete:')
while True:
try:
sync = self.find_text_part('Syncing', 10)
logging.info(sync.text)
except TimeoutException:
break