status-mobile/test/appium/views/chat_view.py

150 lines
5.3 KiB
Python
Raw Normal View History

from selenium.common.exceptions import TimeoutException
from tests import info
from views.base_element import BaseButton, BaseEditBox, BaseText
from views.base_view import BaseView
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()
info('Tap on %s' % self.name)
class AddToContacts(BaseButton):
def __init__(self, driver):
super(AddToContacts, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Add to contacts']")
class UserNameText(BaseText):
def __init__(self, driver):
super(UserNameText, self).__init__(driver)
self.locator = \
self.Locator.xpath_selector('(//android.view.ViewGroup[@content-desc="toolbar-back-button"]'
'//..//android.widget.TextView)[1]')
class SendCommand(BaseButton):
def __init__(self, driver):
super(SendCommand, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='/send']")
class RequestCommand(BaseButton):
def __init__(self, driver):
super(RequestCommand, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='/request']")
class ChatOptions(BaseButton):
def __init__(self, driver):
super(ChatOptions, self).__init__(driver)
self.locator = self.Locator.accessibility_id('chat-menu')
class MembersButton(BaseButton):
def __init__(self, driver):
super(MembersButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector('(//android.view.ViewGroup[@content-desc="action"])[1]')
class ChatSettings(BaseButton):
def __init__(self, driver):
super(ChatSettings, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='Settings']")
class UserOptions(BaseButton):
def __init__(self, driver):
super(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(RemoveButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.TextView[@text='Remove']")
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']")
class MessageByUsername(BaseText):
def __init__(self, driver, username):
super(MessageByUsername, self).__init__(driver)
self.locator = self.Locator.xpath_selector('//*[@text="' + username + '"]'
'/following-sibling::android.widget.TextView')
class MoreUsersButton(BaseButton):
def __init__(self, driver):
super(MoreUsersButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//android.widget.TextView[contains(@text, 'MORE')]")
class UserProfileIconTopRight(BaseButton):
def __init__(self, driver):
super(UserProfileIconTopRight, self).__init__(driver)
self.locator = self.Locator.accessibility_id('chat-icon')
class UserProfileDetails(BaseButton):
def __init__(self, driver):
super(UserProfileDetails, self).__init__(driver)
self.locator = self.Locator.xpath_selector("//*[@text='Profile']")
class ChatView(BaseView):
def __init__(self, driver):
super(ChatView, self).__init__(driver)
self.chat_message_input = ChatMessageInput(self.driver)
self.send_message_button = SendMessageButton(self.driver)
self.add_to_contacts = AddToContacts(self.driver)
self.user_name_text = UserNameText(self.driver)
self.send_command = SendCommand(self.driver)
self.request_command = RequestCommand(self.driver)
self.chat_options = ChatOptions(self.driver)
self.members_button = MembersButton(self.driver)
self.chat_settings = ChatSettings(self.driver)
self.more_users_button = MoreUsersButton(self.driver)
self.user_options = UserOptions(self.driver)
self.remove_button = RemoveButton(self.driver)
self.first_recipient_button = FirstRecipient(self.driver)
self.user_profile_icon_top_right = UserProfileIconTopRight(self.driver)
self.user_profile_details = UserProfileDetails(self.driver)
def wait_for_syncing_complete(self):
info('Waiting for syncing complete:')
while True:
try:
sync = self.find_text_part('Syncing', 10)
info(sync.text)
except TimeoutException:
break
def get_messages_sent_by_user(self, username):
return MessageByUsername(self.driver, username).find_elements()