TypeError:从我的登录方法

时间:2015-05-22 14:00:49

标签: python selenium selenium-webdriver webdriver

我正在重新组织我最近开始的webdriver,python框架。 场景:我从LoginPage类登录我们的网站,调用userLogin_valid方法(这会记录一个有效的用户) 我已更改此方法以返回Main Dashboard Page对象,因为当显示用户登录主页面仪表板时。 从这里我可以单击“管理”选项卡,“数据配置”选项卡等。

从我的DataConfigurationPage_TestCase中,我按如下方式调用用户登录方法:

data_configuration_page = self.login_page.userLogin_valid("userName", "pass")

然后我按照以下方式从主仪表板页面类调用点击数据配置按钮(从主仪表板页面单击数据配置选项卡):

data_configuration_page.click_data_configuration() # Click Data Configuration from menu bar

我收到以下错误:

    Traceback (most recent call last):
  File "C:\Users\riaz.ladhani\PycharmProjects\Selenium Webdriver\ClearCore 501 - Copy\TestCases\DataConfigurationPage_TestCase.py", line 30, in test_add_Data_Objects
    data_configuration_page.click_data_configuration() # Click Data Configuration from menu bar
TypeError: unbound method click_data_configuration() must be called with MainDashboardPage instance as first argument (got nothing instead)

有些帮助表示我在这里做错了以获得此错误。 我在调用页面对象时出错了。

我的代码段如下:

页面\ login.py

import time
import Locators
from selenium.common.exceptions import NoSuchElementException
from Locators.element import BasePageElement
from Locators.locators import MainPageLocators
from Locators import locators
from Locators import element
from Locators.element import BasePageElement
from Pages.admin import AdministrationPage
from Pages.base import BasePage
from Pages.main_dashboard import MainDashboardPage
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By


class LoginPage(BasePage):

    def userLogin_valid(self, name, password):
        _name = name
        _password = password
        userName_textbox = self.driver.find_element(*MainPageLocators.usernameTxtBox)
        userName_textbox.clear()
        userName_textbox.send_keys(_name)
        password_textbox = self.driver.find_element(*MainPageLocators.passwordTxtBox)
        password_textbox.clear()
        password_textbox.send_keys(_password)
        submitButton = self.driver.find_element(*MainPageLocators.submitButton)
        submitButton.click()
        return MainDashboardPage

页面\ main_dashboard.py

import time
import datetime
from selenium.common.exceptions import NoSuchElementException
from Locators.locators import MainPageLocators
from Locators.element import BasePageElement
from Pages.base import BasePage

class MainDashboardPage(BasePage):

    def click_data_configuration(self):
        self.driver.find_element(*MainPageLocators.DataConfiguration_button_xpath).click()
        return MainDashboardPage(self.driver)

的TestCases \ DataConfigurationPage_TestCase.py

import unittest
import time
import datetime
from selenium import webdriver
from Locators import locators
from Locators import element
from Pages import login
from Pages import admin
from Pages import main_dashboard


class AdministrationPage_TestCase(unittest.TestCase):

    def setUp(self):
        webdriver.DesiredCapabilities.INTERNETEXPLORER["unexpectedAlertBehaviour"] = "accept"
        self.driver = webdriver.Ie("C:\QA\Automation\Python_projects\Selenium Webdriver\IEDriverServer_Win32_2.45.0\IEDriverServer.exe")
        self.driver.get("http://riaz-pc.company.local:8080/clearcore")
        self.login_page = login.LoginPage(self.driver)
        self.driver.implicitly_wait(30)

    def test_add_Data_Objects(self):
        print "*** test_add_Data_Objects ***"
        data_configuration_page = self.login_page.userLogin_valid("batman", "batarang123")
        data_configuration_page.click_data_configuration() # Click Data Configuration from menu bar
        assert data_configuration_page.is_Data_Configuration_pageDisplayed(), "Data Configuration Page not displayed"
        print "data_configuration_page.is_Data_Configuration_pageDisplayed()"
        print data_configuration_page.is_Data_Configuration_pageDisplayed()




    def tearDown(self):
        self.login_page.click_logout()
        self.driver.close()

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

1 个答案:

答案 0 :(得分:2)

您的login_page.userLogin_valid(self, name, password)返回的课程不是班级的实例。