我试图第一次使用selenium'LoadableComponent'来加载我的页面。
这是我的简单代码:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class NavigateTo {
private WebDriver driver;
@BeforeClass
public void setup() {
driver = new FirefoxDriver();
}
@Test
public void NavigateToMain() {
@SuppressWarnings("unused")
Login login = new Login(driver).get();
}
}
===================
import static org.testng.AssertJUnit.assertEquals;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.LoadableComponent;
public class Login extends LoadableComponent<Login> {
private WebDriver driver;
private By title = By.cssSelector(".anim-btn.green span");
public Login(WebDriver driver) {
this.driver = driver;
}
@Override
protected void load() {
System.out.println("Navigating to Bizzabo home page");
driver.get("int-www.bizzabo.com");
}
@Override
protected void isLoaded() throws Error {
assertEquals("Get started", driver.findElement(title).getText());
}
}
为什么在调用时:'登录登录=新登录(驱动程序).get()'它不首先通过load()方法,而是直接通过'isLoaded()'方法?
我在这里缺少什么?
答案 0 :(得分:0)
这只是按设计。是指仅执行加载 一次,从而提高测试效果。
如果您需要强制重新加载,您只需将覆盖的load()
函数声明为public
(子类中的重写load()
函数即可)。然后,万一您可以拨打load()
而不是get()
:
public class Login extends LoadableComponent<Login> {
...
/**
* Load the web page.
*/
@Override
public final void load() {
driver.get(...);
}
...
}
如果您不希望通过将protected
修饰符扩展到public
来稍微破坏设计,则可以扩展LoadableComponent
类并添加{{1 } public
功能:
reload()
答案 1 :(得分:0)
首先需要实现isLoaded函数,当它失败时会自动调用加载函数