Не удалось найти элемент на странице с использованием заданных параметров поиска - PullRequest
0 голосов
/ 29 апреля 2019

Автоматизация Appium работает и заканчивается правильно в одном классе, но завершается ошибкой при создании другого класса.

Я пытался удалить все атрибуты в init , кроме первого, и это помогает.

Основной класс (хорошо работает)

import unittest
from appium import webdriver
from ScreenObjects.SendMessage import SendMsg


class AppTestAppium(unittest.TestCase):

  def setUp(self):
      desired_caps = {}
      desired_caps['platformName'] = 'Android'
      desired_caps['platformVersion'] = ''
      desired_caps['deviceName'] = '81e9b20e'
      desired_caps['appPackage'] = 'org.telegram.messenger'
      desired_caps['appActivity'] = 'org.telegram.ui.LaunchActivity'
      desired_caps['noReset'] = 'True'
      self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

  def tearDown(self):
      "Tear down the test"

      self.driver.quit()


  def test_send_messge_to_olga(self):
      "Test is sending message"


      contactItem = self.driver.find_element_by_xpath("//android.view.ViewGroup[contains(@index,'2')]")
      contactItem.click()
      elementTypeField = self.driver.find_element_by_xpath("//android.widget.EditText[contains(@index,'1')]")
      elementTypeField.clear()
      elementTypeField.send_keys("Hello. If you are reading this, my first appium automation has passed")
      sendButton = self.driver.find_element_by_xpath("//android.widget.ImageView[@content-desc ='Send']")
      sendButton.click()



if __name__ == '__main__':
    unittest.main()

Основной класс (не проходит)

import unittest
from appium import webdriver
from ScreenObjects.SendMessage import SendMsg


class AppTestAppium(unittest.TestCase):

  def setUp(self):
      desired_caps = {}
      desired_caps['platformName'] = 'Android'
      desired_caps['platformVersion'] = ''
      desired_caps['deviceName'] = '81e9b20e'
      desired_caps['appPackage'] = 'org.telegram.messenger'
      desired_caps['appActivity'] = 'org.telegram.ui.LaunchActivity'
      desired_caps['noReset'] = 'True'
      self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

  def tearDown(self):
      "Tear down the test"

      self.driver.quit()


  def test_send_messge_to_olga(self):
      "Test is sending message"

      send_message = SendMsg(self.driver)
      send_message.chooseContact()
      send_message.typeMsg()
      send_message.clickSend()


if __name__ == '__main__':
    unittest.main()

с еще одним классом (не работает)



class SendMsg(object):

    def __init__(self, driver):
        self.contactItem = driver.find_element_by_xpath("//android.view.ViewGroup[contains(@index,'2')]")
        self.elementTypeField = driver.find_element_by_xpath("//android.widget.EditText[contains(@index,'1')]")
        self.sendButton = driver.find_element_by_xpath("//android.widget.ImageView[@content-desc ='Send']")


    def chooseContact(self):
        self.contactItem.click()

    def typeMsg(self):
        self.elementTypeField.clear()
        self.elementTypeField.send_keys("Hello")

    def clickSend(self):
        self.sendButton.click()

Я ожидаю, что ТЕСТ ПРОЙДЕН, но на самом деле вывод «Элемент не может быть найден на странице с использованием заданных параметров поиска.»

...