0
這裏調用方法是頁面對象文件: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對象,但失敗恰好發生在這裏。
好的,但代碼出了什麼問題呢?我插入了打印語句,webdriver.current_url返回正確的URL。打印self.webdriver返回的對象不是無。該方法是正確的,因爲它會拋出不存在的方法錯誤。此外,輸入字段的名稱是正確的。我添加了隱式等待,但它不起作用,即使隱含的等待在屬性調用之前立即返回此錯誤。 – Contempt
Omg ...忘了退貨:D – Contempt
我已經習慣了在最後的陳述中不寫回報......那個Ruby的習慣.. – Contempt