【发布时间】:2021-06-19 11:55:24
【问题描述】:
我在 Selenium 中使用页面对象模型定义了 Web 元素。在测试方法中,当我尝试访问这些网络元素或对这些网络元素执行任何操作时,我的测试会完全跳过它并完成,没有错误。
public class HomePage extends Base{
@FindBy(xpath="//button[@id='sparkButton']")
public WebElement menuDropDown;
public HomePage(){
PageFactory.initElements(driver, this);
}
public void clickHomepagemenuDropDown() {
menuDropDown.click();
System.out.println("Print HELLO");
}
}
public class Test1 extends Base{
HomePage homepage = new HomePage() ;
@Test(priority=1)
public void homePage() throws Exception {
try {
//do something
homepage.clickHomepagemenuDropDown();
//print something
}catch (Exception e) {
System.out.println (e);
return;
}
}
如果我替换 homepage.clickHomepagemenuDropDown(); 使用以下几行,我的程序将运行良好。
WebElement mdd = driver.findElement(By.xpath("//button[@id='sparkButton']"));
mdd.click();
是否有一些我缺少的设置?
更正捕获消息后更新-- 我得到以下空异常 无法调用“org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)”,因为“this.searchContext”为空
【问题讨论】:
-
您正在“@Test”声明之外初始化主页。你需要把它移到里面吗?或者,您是否需要一个“@Before”声明来处理它?
-
如果我在“@beforeMethod”中初始化主页,主页变量将超出“@Test 方法”的范围。 "@BeforeMethod" public static void beforeM() { HomePage homepage = new HomePage() ; }
-
然后像我提到的那样把它移到@Test中
-
感谢为我工作
标签: java selenium object webdriver pageobjects