无法在其他类中调用方法

0 投票
1 回答
702 浏览
提问于 2025-04-18 11:00

这是页面对象文件:login.py

from pages.base import BasePage
from config import secrets
from selenium.webdriver.common.keys import Keys

class LoginPage(BasePage):

    def __init__(self):
        self.webdriver = BasePage.webdriver
        port = raw_input("Enter port number: ")
        self.url = "http://localhost:" + port

    @property
    def retrieve_username_field(self):
        self.webdriver.find_element_by_name("username")

    @property
    def retrieve_password_field(self):
        self.webdriver.find_element_by_name("password")

    def login(self, username=None, password=None):
        username = username or secrets.username
        password = password or secrets.password
        self.retrieve_username_field.send_keys(username)
        self.retrieve_password_field.send_keys(password)
        self.retrieve_password_field.send_keys(Keys.RETURN)

这是基础页面文件:base.py

from selenium import webdriver

class BasePage(object):
    webdriver = webdriver.Firefox()

    def go(self):
        self.webdriver.get(self.url)

这是测试文件:test_login.py

import unittest

from pages.login import LoginPage

login_page = LoginPage()

def setUpModule():
    login_page.go()

def tearUpModule():
    login_page.logout()


class TestLogin(unittest.TestCase):

    def test_login_succeeds_with_valid_credentials(self):
        login_page.login()
        xpath = "//th[text() = 'Spool Name']"
        self.assertIsNotNone(login_page.webdriver.find_element_by_xpath(xpath))



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

问题是我遇到了这个错误:http://puu.sh/9JgRd/e61f5acec3.png,我不明白为什么我不能调用登录方法。我有对LoginPage对象的引用,但错误正好发生在这里。

1 个回答

2

你的问题不是不能调用 login(),而是 self.retrieve_username_field 返回了 None,所以它没有 send_keys 这个方法。你看到的错误信息正是这个意思。

撰写回答