Python TypeError:当我从登录方法返回页面对象时,取消绑定方法

Python TypeError:当我从登录方法返回页面对象时,取消绑定方法,python,selenium,selenium-webdriver,webdriver,Python,Selenium,Selenium Webdriver,Webdriver,我正在重新组织我最近启动的Web驱动程序python框架。 场景:我从LoginPage类登录到我们的网站,调用userLogin\u valid方法(该方法以有效用户登录) 我已将此方法更改为返回主仪表板页面对象,因为当用户登录主仪表板时,会显示该对象。 在这里,我可以单击管理选项卡、数据配置选项卡等 从我的DataConfigurationPage_测试用例中,我调用用户登录方法,如下所示: data_configuration_page = self.login_page.userLogi

我正在重新组织我最近启动的Web驱动程序python框架。 场景:我从LoginPage类登录到我们的网站,调用userLogin\u valid方法(该方法以有效用户登录) 我已将此方法更改为返回主仪表板页面对象,因为当用户登录主仪表板时,会显示该对象。 在这里,我可以单击管理选项卡、数据配置选项卡等

从我的DataConfigurationPage_测试用例中,我调用用户登录方法,如下所示:

data_configuration_page = self.login_page.userLogin_valid("userName", "pass")
然后,我从主仪表板页面类调用click data configuration按钮,如下所示(从主仪表板页面单击data configuration选项卡):

我得到以下错误:

    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)
一些帮助感谢我在这里犯下的错误,以得到这个错误。 我调用页面对象时出错了

我的代码片段如下所示:

data_configuration_page = self.login_page.userLogin_valid("userName", "pass")
Pages\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
Pages\main\u 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\u 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()

您的
login\u页面。userLogin\u valid(self、name、password)
返回一个类而不是该类的实例。

return main仪表板页面是否返回一个类?如果返回新的MainDashboardPage(),它在Python中不起作用。我想在C#中,new classname()将返回该类的一个实例。我将尝试返回MainDashboardPage()谢谢!我的测试现在运行得更远了。我现在得到一个不同的错误:TypeError:\uuuuu init\uuuuuuu()正好接受2个参数(给定1个),我将尝试返回MainDashboardPage(self)尝试返回MainDashboardPage(self.driver),就像在单击数据配置(self)中一样。