Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设计模式/OOP:如何将操作拆分为类_Python_Oop_Design Patterns_Selenium_Pageobjects - Fatal编程技术网

Python 设计模式/OOP:如何将操作拆分为类

Python 设计模式/OOP:如何将操作拆分为类,python,oop,design-patterns,selenium,pageobjects,Python,Oop,Design Patterns,Selenium,Pageobjects,我正在使用python页面对象实现自动化。我有一个basePageObject(ChangePasswordPage),它还有4个子页面,这4个子页面根据页面上的字段而有所不同。所有这些更改密码页面都在相同的URL上运行,但它们因字段而异,这取决于用例。例如,一个有,旧的密码字段,另一个没有,同样还有一个安全问题和答案,诸如此类。这就是为什么我为所有这些变体创建了不同的子类 现在我的问题是,我必须编写一个操作,递归地尝试使用给定的密码集更改密码。我无法在child change password

我正在使用python页面对象实现自动化。我有一个basePageObject(ChangePasswordPage),它还有4个子页面,这4个子页面根据页面上的字段而有所不同。所有这些更改密码页面都在相同的URL上运行,但它们因字段而异,这取决于用例。例如,一个有,旧的密码字段,另一个没有,同样还有一个安全问题和答案,诸如此类。这就是为什么我为所有这些变体创建了不同的子类


现在我的问题是,我必须编写一个操作,递归地尝试使用给定的密码集更改密码。我无法在child change password页面中编写该操作,因为该递归操作需要子类的“changePassword”操作。此外,每个子类的递归操作是不同的。这对所有的子类来说都不一样。那么,哪种模式最适合这种情况。我应该在哪里编写这个新的递归操作,如何创建新的类,如何应用OOP原则。

这是一个一般性的问题,但我认为您可以尝试以下方法。 您编写“更改密码”用例所需的方法,并在
basePageObject
中保持它们的抽象性。在所有的
ChangePasswordPageObject
中,您实现了一种具体的密码更改方法。

因此,在所有情况下,基本上都有相同的方法调用,但根据用例/密码页的不同,它执行不同的操作。

请提供一些代码。这里有一些提示,您可能会遇到更基本的设计问题,但如果没有代码,就很难说出任何事情。