0
我是一個Python +硒新手。 今天開始學習網頁對象模式,面對這樣的錯誤:Python +硒:頁面對象模式:需要幫助弄清楚爲什麼它看不到屬性
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
IDK爲什麼它拋出它導致登錄表單是定義
基頁:
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)
而且也許有人想找個學生來教硒+蟒蛇?
THX,@Guy它幫助。但我遇到了一個新問題: 'Traceback(最近調用最後一個): 文件「logintest.py」,第13行,在test_login中 login_page.login() 文件「D:\ Tests \ page object pattern \ loginpage。 python「,第20行,登錄 BasePage.fill_the_form(LoginPage.loginform,LoginPage.email) TypeError:fill_the_form()missing 1 required required argument:'value'' –
@RomanMakowski嘗試'超級(LoginPage,self).fill_the_form (LoginPage.loginform,LoginPage.email)' – Guy
現在回溯是更大: 回溯(最近通話最後一個): 文件 「logintest.py」,13號線,在test_login login_page.login() 文件「d :\ Tests \ page object pattern \ loginpage.py「,第20行,登錄 super(LoginPage,self).fill_the_form(LoginPage.loginform,LoginPage.email) fill_the_form form = self.driver文件「D:\ Tests \ page object pattern \ base.py」,第14行。 find_element(locator) ** some selenium stuff ** selenium.common.exceptions.WebDriverException:消息:Cound不會將策略轉換爲字符串 –