В настоящее время у меня есть Python 3.7.3 с robotframework 3.1.1 и я создал библиотеку Python (MySite.py) следующим образом:
from selenium import webdriver
from collections import namedtuple
from HomePage import *
class Pages(object):
def __init__(self, handle):
self._pages = {}
self._home_window = handle
pass
@property
def home_window(self):
return self._home_window
@home_window.setter
def home_window(self, v):
self._home_window = v
@property
def homePage(self):
return self._pages['home']
def add(self, name, page):
self._pages[name] = page
def get(self, name):
return self._pages[name]
def getPages(self):
return self._pages
class MySite(object):
def __init__(self):
self._driver = None
@property
def driver(self):
return self._driver
@driver.setter
def driver(self, v):
self._driver = v
def close_all_windows(self):
# Close all windows
pages = self.pages.getPages()
for name, page in pages.items():
page.close()
def open_my_page(self):
self.driver = webdriver.Ie("IEDriverServer_Win32_3.141.0\\IEDriverServer.exe")
# Define pages
self.pages = Pages(self.driver.current_window_handle)
self.pages.add('home', HomePage(self.driver, self.pages))
# Open browser
self.driver.get(www.mypage.com)
# Code to wait to finish loading the page
Когда я создаю скрипт робота, чтобы открывать и закрывать браузер вв одном тестовом примере это работает:
*** Settings ***
Library MySite.py
*** Test Case ***
Open Browser to mypage.com and close browser
Open My Page
Close All Windows
Но когда я создаю сценарий Robot, чтобы открыть браузер в одном тестовом примере, а затем в другом тестовом примере, чтобы закрыть его, я получаю AttributeError: у объекта 'MySite' нетатрибут 'pages':
*** Settings ***
Library MySite.py
*** Test Case ***
Open Browser to mypage.com
Open My Page
Close Browser
Close All Windows
Кажется, что переменные моего экземпляра не сохраняются для второго теста робота.Вы знаете, почему это может быть?Или что я делаю не так?