以下是我对应用于Webdriver的PageObjects/Pagefactory的实现理解:
1. Create the following structure in eclipse
--> com.example.qa.pageobjects
--> LoginPage.java
Every class in this package has something like:
@FindBy(how = How.NAME, using = "logonName")
private WebElement logonNameField;
and the Methods, call Webelement, and call methods on them, like:
logonNameField.sendKeys("username");
Which are called from ScenrioTests.
--> HomePage.java (i go there after i login)
--> Page.java (abstract)
--> com.example.qa.setup
--> Browser.java
--> FirefoxBrowser.java (Code specific to FFox)
--> ChromeBrowser.java (Code Specific to Chrome)
--> com.example.qa.test
--> Scenario1234.java
--> Scenario2345.java
这些Scenario Classes实例化PageObjects,并在其中调用方法,而Browser设置仅在每次测试运行时调用一次。
现在的问题是:
公共的 MyPage 方法() { 调用方法,如登录() 等返回页面工厂.initElements(驱动程序, MDNS登录页面.class); }
>
或者,我应该从默认构造函数调用相同的页面工厂吗?
我的理解/执行是否正确?
我想我有点遵循你的第一方法。我将尝试通过举例说明我的实现来回答这个问题,但我不确定这对您的目的是否有用。我有一个baseTest类,装载了可以在我的测试类中使用的通用方法。(例如,实例化浏览器、打开登录页面等)
abstract class TestBase {
//somewhere
protected static LoginPage goToLoginPage(){
driver.get(loginPage);
return PageFactory.initElements(driver, LoginPage.class);
}
protected static void startBrowser(Browser browser){}
//implemntation
}
然后,在继承抽象类的测试类中,我以以下方式使用它
@BeforeClass
public static void setup(){
//use a common method to start browser
startBrowser(Browser.FIREFOX);
}
@Test
public void canLogInToHomePage(){
//start my test like this
LoginPage loginPage =goToLoginPage();
}
我的目标是:我需要构建一个自动化工具,它使用页面对象模型来自动化web应用程序。 页面对象模型与特定的web应用程序紧密耦合。如果您正在自动化一个特定的Web应用程序,则需要为该应用程序定义页面对象库并相应地运行测试。 现在,我能以某种方式设计和开发页面对象模型,使其自动化多个Web应用程序吗? 谢谢
问题内容: 我想创建一个安全的登录/注销机制。我开始阅读以下文章,以了解要考虑的事项: 正确,优雅地解决注销问题 再谈注销问题 这些文章提出了一些好处,但是我正在考虑使用与Yahoo邮件登录页面类似的方式使用HTTPS。您知道…键入http://mail.yahoo.com,然后将您重定向到HTTPS页面,例如** https://**login.yahoo.com/config/login,在其
在Selenium PageObjects中,我没有实例化任何web驱动程序实例,也没有如下所示进行编码 我试图在Selenium Page对象函数中实现以下代码。 有谁能建议我,在使用页面对象模型时,如何在上述代码中使用webdriver实例?
问题内容: 使用jQuery,我想禁用主体的滚动: 我的想法是: 组 捕获当前 绑定到正文滚动事件,将scrollTop / scrollLeft设置为捕获的值。 有没有更好的办法? 更新: 我知道有人会在想“为什么他不只是在面板上使用?”。 请不要提出这个建议,因为我还有其他原因。 问题答案: 我发现执行此操作的唯一方法与您所描述的类似: 抓住当前滚动位置(不要忘记水平轴!)。 将溢出设置为隐藏
我们可以使用页面对象执行滚动吗? 实际上,我需要根据元素滚动网页(向上/向下)。如何使用页面对象执行。 我使用Selenium web drive来启动浏览器,并使用Page对象来自动化web页面。 有什么建议吗???
问题内容: 因此,我有一个应用程序(facebook应用程序实体),并且有一个页面。我想通过Java代码(通过restfb或任何其他建议)使用该应用发布到页面。似乎我错过了页面授予应用程序发布权限的阶段。不知道该怎么做。谢谢你们。友利 问题答案: 您只能发布“作为页面”,而不能发布“作为应用”。您需要页面访问令牌,并且需要使用/ page-id / feed端点进行发布。链接与信息和示例代码: h