java - 将元素名称传递给另一个类方法

标签 java selenium cucumber

我有一个功能文件,其中将选项卡名称(例如“操作”、“工作订单”、“通知”选项卡)传递给定义了选项卡元素及其操作的 pageobjects 类。 如果该选项卡名称不可见,我们必须单击箭头按钮并单击该项目。我将该项目命名为 tabNameItem。不清楚如何在此方法中添加选项卡项目名称。以下方法引发错误“然后从选项卡用户单击“accountWorkOrdersTab”# AccountsPageSteps.from_the_tabs_User_clicks_on_tab(WebElement) cucumber.runtime.CucumberException:不知道如何将“accountWorkOrdersTab”转换为 org.openqa.selenium.WebElement。尝试编写自己的转换器:“ 调用方式:

@Then("^from the tabs User clicks on \"([^\"]*)\"$")
public void from_the_tabs_User_clicks_on_tab(WebElement tabname) throws Throwable {
    serviceCloudAccountsPageObject.openAccountsTabs(tabname);
}

Action 类:

@FindBy(xpath = "//a[@text()='Work Order')]")
public WebElement accountWorkOrdersTab;

@FindBy(xpath = "//span[contains(.,'Work Order')]")
public WebElement accountWorkOrdersTabItem;

public void openAccountsTabs(WebElement tabName) {

    if(verificationHelper.isDisplayed(tabName)){
        tabName.click();
        System.out.println(tabName.getText() +" tab displayed & is clicked");
    }
    else {

        moreTab.click();
        accountWorkOrdersTabItem.click();
        System.out.println("WorkOrder tab not displayed & is clicked from More tab");

    }
}

}

最佳答案

不要传递功能文件中的 WebElement,只需传递字符串。 from_the_tabs_User_clicks_on_tab(字符串选项卡名称)

根据此字符串值,您可以使用 case 语句并返回 webElement。

public WebElement returnElement(String tabname) {
    WebElement returnElement = null;


    switch (elementName) {
    case "tabname1":
        returnElement = driver.findElement(By.xpath("//a[@text()='Work Order')]"));
        break;
    case "tabname2":
        returnElement = driver.findElement(By.xpath("//span[contains(.,'Wor Order')]"));;
        break;
default:
        break;
    }

    return returnElement;
}

使用上面的代码,您应该获得所需的 Web 元素,并且可以在返回元素上执行操作。

希望你明白了。

关于java - 将元素名称传递给另一个类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198599/

相关文章:

java - 将 "jumping"时的 inputText 值从一个 Controller 存储到另一个 Controller

java - 如何解决 Jenkins 中 Spring Boot 项目自定义创建的依赖关系?

java - Java中的HTML实体解码: apostrophe

java - 我可以分配变量然后立即引用它们吗?

javascript - 使用配置文件路径打开 firefox [selenium webdriver NodeJS]

java - TestNG 中的 RunListener 等价物

ruby - 配置 capybara 信任所有 SSL 证书

selenium - Protractor 错误 - 无法启动 WebDriver session

Java Selenium 通过命令提示符 CMD Windows 运行,无需 IDE

java - 如何在没有冗余的情况下访问通过 Java 中的 Gherkin 步骤定义创建的公共(public)变量?