我已经阅读了一些关于Python Selenium Webdriver页面对象模型的教程,因为我必须在Python中使用Selenium自动化gui测试。
首先,我试图编写一个Login-Page类和一个LoginMainTest类。运行代码时出现以下错误。
属性错误:LoginPage实例没有属性“driver”
我想我必须指定selenium驱动程序,在其中实例化LoginPage e、 g.在这行上,log in=LoginPage.LoginPage()
我需要一些帮助。
完全错误:
Traceback (most recent call last):
File "E:\Python projects\unitTest_sample - Modifying into Page Object\LoginMainTest.py", line 11, in test_valid_login
log_in = LoginPage.LoginPage()
File "E:\unitTest_sample - Modifying into Page Object\LoginPage.py", line 20, in __init__
emailFieldElement = self.driver.find_element_by_id(self.emailFieldID)
AttributeError: LoginPage instance has no attribute 'driver'
我的LoginMainTest.py类如下:
import LoginPage
import unittest
class GoogleTest(unittest.TestCase):
def test_valid_login(self):
log_in = LoginPage.LoginPage()
log_in.userLogin_valid()
if __name__ == '__main__':
unittest.main()
我的Login.py类如下:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
class LoginPage():
Username = "test1"
password = "Test"
emailFieldID = "email"
passFieldID = "pass"
loginButtonXpath = "//input[@value='log in']"
logo_xpath = "//a[contains(@href, 'logo')])[1]"
def setup(self):
self.driver = webdriver.Firefox()
self.driver.get("http://www.testaaa.com")
def __init__(self):
emailFieldElement = self.driver.find_element_by_id(self.emailFieldID)
passFieldElement = self.driver. find_element_by_id(self.passFieldID)
loginFieldElement = self.driver.find_element_by_xpath(self.loginButtonXpath)
def userLogin_valid(self):
self.emailFieldElement.clear()
self.emailFieldElement.send_keys(self.Username)
self.passFieldElement.clear()
self.send_keys(self.password)
self.loginFieldElement.click()
def tearDown(self):
self.driver.quit()
首先,你的设计有缺陷。
脚本失败的原因是,当您创建登录页的对象时,调用了in it但找不到驱动程序,因为它是在setup fn中定义的(从未调用过)
理想情况下,在页面对象模型中,应该在测试文件中初始化浏览器(驱动程序),然后在创建任何页面文件的对象时,应该传递该驱动程序。
你的装置应该是这样的
页面文件:
测试文件:
相关问题 更多 >
编程相关推荐