AttributeError: объект «ClassName» не имеет атрибута «драйвер» в Appium Python - PullRequest
0 голосов
/ 23 апреля 2019

Я использую это тело (требуемые колпачки установлены правильно в файле конфигурации). Независимо от того, что я получаю, у объекта «AttributeError: объект ClassName» нет атрибута «драйвер» или подобных ошибок - нет атрибута find_element_by_xpath или чего-либо еще.У вас есть какие-нибудь предложения?Я делаю так же, как в лекциях, может быть, что-нибудь, связанное с настройками appium + python?

import unittest
from appium import webdriver
import time
import tracemalloc
tracemalloc.start()
from config import desired_caps
# self = webdriver
# self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)


class BaseTest(unittest.TestCase):

    def test_testcase1(self):
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    def test_credentials(self):
        email = self.driver.find_element_by_xpath("proper Xpath")
        email.send_keys("Test")

        save = self.driver.find_element_by_link_text("Log In")
        save.click()

    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':

    suite = unittest.TestLoader().loadTestsFromTestCase(BaseTest)
    unittest.TextTestRunner(verbosity=3).run(suite)

1 Ответ

0 голосов
/ 23 апреля 2019

вам нужно превратить ваш драйвер в функцию с именем setUp(). Пакет модульных тестов выполняется примерно так.

setUp()
run test_testcase1()
tearDown()

setUp()
run test_credentials()
teardown()

...etc...

, если драйвер driver не создан в setup(), другие тесты об этом не узнают. Если вы не сделаете driver в каждом тесте. То же самое касается любых других тестовых переменных, которые вам понадобятся.

Таким образом, каждый тест не зависит друг от друга, и каждый тест начинается заново.

...