Я новичок python + selenium. Сегодня начал изучать шаблон страницы объекта и столкнулись с этой ошибки:Python + selenium: шаблон объекта страницы: нужна помощь, чтобы понять, почему он не видит атрибут
Traceback (most recent call last):
File "logintest.py", line 17, in test_login
login_page.login()
File "D:\Tests\page object pattern\loginpage.py", line 19, in login
BasePage.fill_the_form(loginform, email)
NameError: name 'loginform' is not defined
ИДК, почему он бросает это вызывает LoginForm является определено
Base Страница:
from abc import abstractmethod
from selenium import webdriver
class BasePage(object):
def __init__(self, driver):
self.driver = driver
@abstractmethod
def _validate_page(self, driver):
return
def fill_the_form(self, locator, value):
form = self.driver.find_element(locator)
self.form.clear()
self.form.send_keys(value)
def go_to(self, locator):
self.driver.find_element(locator)
self.driver.click()
Войти Страница:
from base import BasePage
from homepage import HomePage
from selenium.webdriver.common.by import By
class LoginPage(BasePage):
email = '[email protected]'
password = 'test'
loginform = (By.ID, 'email')
passwordform = (By.ID, 'password')
button = (By.XPATH, "//*[contains(text(), 'Log In')]")
def __init__(self, driver):
super(LoginPage, self).__init__(driver)
def _validate_page(self, driver):
assert 'Login' in driver.title()
def login(self):
BasePage.fill_the_form(loginform, email)
BasePage.fill_the_form(passwordform, password)
BasePage.go_to(button)
Базовый тест:
from selenium import webdriver
import unittest
class BaseTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(10)
self.driver.get('https://testtest.com/')
def tearDown(self):
self.driver.quit()
И, наконец, мой тест:
import unittest
from basetest import BaseTest
from base import BasePage
from loginpage import LoginPage
class logintest(BaseTest):
def test_login(self):
login_page = LoginPage(self.driver)
login_page.login()
if __name__ == '__main__':
unittest.main(verbosity = 2)
Кроме того, может быть, кто-то хочет найти студента, чтобы преподавать селен + питона?
ТНХ, @Guy Это помогло. Но я столкнулся с новой проблемой: «Traceback (последний последний звонок): Файл« logintest.py », строка 13, в test_login login_page.login() Файл« D: \ Tests \ page object pattern \ loginpage. py ", строка 20, в логине BasePage.fill_the_form (LoginPage.loginform, LoginPage.email) ТипError: fill_the_form() отсутствует 1 обязательный позиционный аргумент: 'value'' –
@RomanMakowski Попробуйте' super (LoginPage, self) .fill_the_form (LoginPage.loginform, LoginPage.email) ' – Guy
Теперь отслеживающий еще больше: Traceback (самый последний вызов последнего): Файл "logintest.py", строка 13, в test_login login_page.login() файла«D : \ Tests \ page object pattern \ loginpage.py ", строка 20 , in login super (LoginPage, self) .fill_the_form (LoginPage.loginform, LoginPage.email) Файл «D: \ Tests \ page object pattern \ base.py», строка 14, в fill_the_form form = self.driver. find_element (локатор) ** некоторые вещи селена ** selenium.common.exceptions.WebDriverException: Сообщение: Cound не конвертировать стратегию в строку –