繁体   English   中英

Selenium Java-页面对象模型查询

[英]Selenium Java - Page Object Model Query

假设有一个页面说http://google.com/AddUser ,您在此处输入记录的详细信息,然后单击“保存”。 完成此操作后,页面将重定向到

http://google.com/userList

您可以在其中看到用户列表,包括刚刚输入的新记录。

如果我们AddUser.java页面对象模型进行操作,则在AddUser.java上应存在用于输入详细信息并保存记录的方法,而在UserList.java上应具有用于验证记录是否已实际保存和显示的方法。

如果我们认为addUser和userList是两个类的对应对象,则如下所示:

addUser.enterDetailsSaveRecord();

userList.validateSavedRecord();

因此,在我的测试用例中,我需要调用2个单独的方法,一个用于操作,另一个用于验证。

AddUser.javaUserList.java都具有BasePage.java作为超类。 有没有办法将它们组合成一个单一方法,或者我正在以一种错误的方式进行操作,是否有更好的方法?

谢谢

我的方法也没什么错,尽管我的方法通常是将与应用程序的功能交互与测试功能从逻辑上分开。 所以,我仍然会

addUser.enterDetailsSaveRecord();

但是对于userList我将使用

UserItem foundUser = userList.findUser(targetUser);

其中UserItem是用户表中的一行。 然后,我的测试将验证foundUser是正确的。

尽管最终需要多写几行代码,但它可以使对象模型整洁而简单地为被测对象建模,并在测试本身中找到测试代码。

使用PageFactory您有2个PageObjects作为AddUser.javaUserList.java 因此,假设您在调用方法时传递了适当的参数,则以下内容适用于您:

addUser.enterDetailsSaveRecord();
userList.validateSavedRecord();

但是从最佳实践中Assertions should be done in a seperate utility/package/class得出, Assertions should be done in a seperate utility/package/class ,与@JeffC注释类似:

Best practice is to keep the validation code out of the page objects

因此,您应该创建一个单独的公用实用程序/程序包/类,该公用程序/程序包/类将处理所有的Assertions 可以调用class包含AssertionsPageObject类为好。

因此,您的整个测试环境将包含3个Packages 一个包含main()/@Test类的软件包,一个包含PageObjects软件包(例如AddUser.java ,一个Utility软件包,包含用于包含Assertions的类,例如validateSavedRecord()

您的方法是正确的。 这些方法应该属于不同的页面。 请将方法更新为:

public UserList enterDetailsSaveRecord() {
// your code to save the details
return new UserList();
}

因此,您可以将其用作:

addUser.enterDetailsSaveRecord().validateSavedRecord()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM