首页 > 解决方案 > WebElementFacade 没有点击网页中的元素

问题描述

我尝试在 Serenity-bdd 中编写 Click() 函数作为在框架中使用的常用方法。但是,我将其存储为 WebElementFacade 以在 Click() 函数中调用的网页元素如下所示。它没有识别元素并单击。它抛出错误**"NullpointerException"** 。请帮助我出错的地方。

注意:如果我使用 Webelement 作为目标类型,它工作正常。但我需要元素作为 WebElementFacade 函数来检查更多条件。请帮忙解决

WebElementFacade --> 存储在不同的 (.java) 中,如下所示,

public class ParabankForm extends PageObject {
    
    
     public WebElementFacade REGISTER_BUTTON = $(By.xpath("//*[text()='Register']"));
}

功能:

/*
 * Function Name : Click()
 * Author: Koushick Sudharsanam
 * Purpose: The Actor is used to click on the Webelement Target in Webpage
 * 
 */
public void Click(Actor act, WebElementFacade target) {
    
        if(target.isDisplayed()||target.isClickable())
        {
         act.attemptsTo(Click.on(target));
        }
        else
        {
            act.wasAbleTo(target.waitUntilClickable());
            
            if(target.isCurrentlyEnabled() && target.isClickable())
            {
                act.attemptsTo(Click.on(target));
            }
        }
}

所以在步骤定义中我会这样调用,

@Then("i click on the RegisterButton")
    public void i_click_on_the_register_button() {
        
        Utiltiesfunction.GetInstance().Click(act, obj.REGISTER_BUTTON);
         
    }

错误:

java.lang.NullPointerException
    at net.serenitybdd.core.pages.WebElementResolverByLocator.resolveForDriver(WebElementResolverByLocator.java:25)
    at net.serenitybdd.core.pages.WebElementFacadeImpl.getResolvedELement(WebElementFacadeImpl.java:234)
    at net.serenitybdd.core.pages.WebElementFacadeImpl.getElement(WebElementFacadeImpl.java:229)
    at net.serenitybdd.core.pages.WebElementFacadeImpl.isDisplayed(WebElementFacadeImpl.java:1351)
    at CucumberRunner.my.commonfunction.Utiltiesfunction.Click(Utiltiesfunction.java:37)
    at CucumberRunner.my.stepdefinitions.Parabankdef.i_click_on_the_register_button(Parabankdef.java:84)

标签: javaseleniumserenity-bddcucumber-junitcucumber-serenity

解决方案


推荐阅读