这是页面对象文件: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而且我不确定为什么我无法调用login方法。我引用了LoginPage对象,但是在这里发生了失败。
答案 0 :(得分:2)
您的问题不在于您无法拨打login()
,但self.retrieve_username_field
会返回None
,因此没有send_keys
方法。
这正是你得到的错误告诉你的。