gpt4 book ai didi

java - 返回页面引用作为页面上操作的结果?

转载 作者:行者123 更新时间:2023-12-01 23:01:11 26 4
gpt4 key购买 nike

我正在使用LoadableComponent<T>在一个 Selenium 测试项目中。我有一个带有主页(建模为 MainPage.java )的应用程序,我可以从该主页转到登录页面( LoginPage )。我输入一些凭据,登录表单将我重定向(如果凭据有效)到 MainPage再次,启用一些额外的功能。因为我用MainPage作为许多测试的起点,我必须实现 load()方法MainPage具有有效的 URL。所以如果我做类似的事情:

MainPage mainpage=new MainPage();
mainpage.get();
LoginPage loginPage=mainpage.clickLogin();
loginPage.setUser("whatever").setPassword("totally_secret");
mainpage = loginPage.clickJoin();
mainpage.get();

我无法确定该操作是否将我引导至 mainpage成功与否,因为无论如何,最后一次调用都会加载页面。另一方面,如果我打电话clickJoin()方法而不将返回的对象分配给变量,我无法验证是否加载了正确的页面,并且无法获取对其方法的引用以继续测试。我还可以做 clickJoin()方法返回 void,但是如何在测试中获取对新页面的引用呢?我该如何处理?

最佳答案

为什么还要在 loginPage.clickJoin() 之后调用 mainpage.get() ?与页面上元素的交互不会将您带到下一个/上一个吗?

一般来说,您应该能够立即与从 clickJoin() 返回的 mainPage 对象进行交互。 您不必再次调用get()。如果您在没有它的情况下遇到错误,可能是因为代码执行速度太快,而没有真正等待页面正确加载。

为了避免这种情况,您可以使用 loginPage.clickJoin() 方法确保主页已再次加载。

public MainPage clickJoin() {

joinLink.click(); //clicking some link/button or whatever should take you to the page

new WebDriverWait(driver, timeToWait).until(
//here you can use the ExpectedConditions class to wait for the title
//to change to a specified value or something similar. There's a wide
//variety of methods provided. Alternatively, you can implement the
// ExpectedCondition interface yourself
);
return new MainPage(driver);
}

如果页面加载失败,您将收到异常并且测试将失败。

您不必以与上面的伪代码完全相同的方式执行此操作,但 WebDriverWait 似乎是一种确保在页面之间导航时加载正确页面的方法。

关于java - 返回页面引用作为页面上操作的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23389706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com